Sì, è possibile avere un campo privato all'interno di una classe astratta. Tuttavia, questo campo sarà accessibile solo alle funzioni all'interno di quella classe astratta. Qualsiasi classe che erediti dalla tua classe astratta non sarà in grado di accedere al campo.
È possibile dichiarare sia campi che funzioni come pubblici, protetti o privati all'interno di una classe astratta. Se un campo o una funzione è pubblica, è accessibile a chiunque. Se è protetto, è accessibile solo a quella classe e alle classi che ereditano da quella classe. Se è privato, è accessibile solo a quella classe.
Le funzioni astratte devono essere implementate da una classe ereditaria, quindi non ha senso (e probabilmente non funzionerà) avere una funzione astratta privata.
Non faccio PHP, ma penso che potrebbe essere legale e sensato se si ha almeno un metodo in PersonAbstract che usa la variabile. – AFract
Sì, è legale. Sebbene la classe sia 'abstract', le classi che ne derivano possono ancora chiamare i suoi metodi' protected/public', quei metodi * do * hanno accesso alla variabile 'private'. – haim770
@Anas è possibile dichiarare l'attributo privato ma non è possibile accedervi nell'estensione della classe. – Whirlwind