Citat:
Originalno napisao japan
više kao na pogodnost koja omogućava da se konstrukt "implemetnts Interface, extends Base" svede na "extends AbstractBase".
|
Ali upravo to i pitam, zašto je potrebno da AbstractBase bude nešto specijalno, da zahteva specijalni keyword i specijalan thread na DPT, zašto ne može da bude obična PHP klasa koju ćeš nazvati AbstractBase ako ti baš toliko znači da to nešto bude "apstraktno".
Što se tiče primera, u Javi je neophodno da 1) postoji roditeljska klasa, i 2) da roditeljska klasa ima navedena dva metoda. Keyword abstract ti omogućava da te metode ne moraš da implementiraš (pišući prazne brejsove ili dižući exception), po cenu da samu parent klasu ne možeš da instanciraš.
PHP i drugi dinamički jezici već imaju tu pogodnost da 1) ne moraš da imaš parent klasu, a ako baš hoćeš da je imaš, 2) ne moraš da navodiš neimplementirane metode i 3) možeš da sprečiš njeno instanciranje na druge načine koji ne zahtevaju dodatno bloatovanje ionako već punačke sintakse.