Tak, możesz mieć prywatne pole w klasie abstrakcji. To pole będzie dostępne tylko dla funkcji w obrębie tej klasy abstrakcyjnej. Wszelkie klasy dziedziczące po klasie abstrakcyjnej nie będą miały dostępu do pola.
Możesz zadeklarować zarówno pola, jak i funkcje jako publiczne, chronione lub prywatne w ramach klasy abstrakcji. Jeśli pole lub funkcja jest publiczna, jest dostępna dla każdego. Jeśli jest on chroniony, jest dostępny tylko dla tej klasy i dowolnych klas dziedziczących po tej klasie. Jeśli jest prywatny, jest dostępny tylko dla tej klasy.
Funkcje abstrakcyjne muszą być implementowane przez klasę dziedziczącą, więc nie ma sensu (i prawdopodobnie nie będzie działać), aby mieć prywatną funkcję abstrakcyjną.
Nie PHP, ale myślę, że to może być legalne i sensowne tak długo, jak masz co najmniej jedną metodę w PersonAbstract, które używają zmiennej. – AFract
Tak, jest to zgodne z prawem. Chociaż klasa jest "abstrakcyjna", klasy, które z niej wyprowadzają, mogą nadal wywoływać swoje metody "chronione/publiczne", te metody * do * mają dostęp do zmiennej 'private'. – haim770
@Anas Możesz zadeklarować prywatny atrybut, ale nie możesz uzyskać do niego dostępu w rozszerzonej klasie. – Whirlwind