Ja, Sie können ein privates Feld innerhalb einer abstrakten Klasse haben. Dieses Feld ist jedoch nur für Funktionen innerhalb dieser abstrakten Klasse zugänglich. Alle Klassen, die von Ihrer abstrakten Klasse erben, können nicht auf das Feld zugreifen.
Sie können sowohl Felder als auch Funktionen als öffentlich, geschützt oder privat innerhalb einer abstrakten Klasse deklarieren. Wenn ein Feld oder eine Funktion öffentlich ist, ist es für jeden zugänglich. Wenn es geschützt ist, ist es nur für diese Klasse und alle Klassen zugänglich, die von dieser Klasse erben. Wenn es privat ist, ist es nur für diese Klasse zugänglich.
Abstrakte Funktionen müssen von einer erbenden Klasse implementiert werden, daher macht es keinen Sinn (und wird wahrscheinlich nicht funktionieren), eine private abstrakte Funktion zu haben.
Ich mache nicht PHP, aber ich denke, es könnte legal und sinnvoll sein, solange Sie mindestens eine Methode in PersonAbstract haben, die die Variable verwenden. – AFract
Ja, es ist legal. Obwohl die Klasse "abstrakt" ist, können die Klassen, die von ihr abgeleitet sind, ihre 'protected/public'-Methoden aufrufen, diese Methoden * haben * Zugriff auf die 'private'-Variable. – haim770
@Anas können Sie private Attribute deklarieren, aber Sie können nicht darauf zugreifen, wenn Sie die Klasse erweitern. – Whirlwind