Weźmy ten przykład:Czy konstruktory klasy abstrakcyjnej nie są wywoływane niejawnie, gdy tworzona jest klasa pochodna?
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
pochodzących z C# tło, spodziewam wyjście być
__construct Baza
Dziecko __construct
Jednakże rzeczywista moc jest po prostu
Dziecko __construct
Nie jawnie o tym informują, ale sugerują, że jeśli klasa podrzędna nie ma konstruktora, to zostanie wywołany konstruktor macierzysty. Czy to prawda? – andrew
Tak: jeśli klasa podrzędna nie definiuje konstruktora, to element macierzysty nie jest nadpisywany, a zatem nazywany jest ;;; zacytowanie instrukcji: Konstruktory macierzyste nie są wywoływane niejawnie **, jeśli klasa podrzędna definiuje konstruktora **. –
@PascalMARTIN Dziękuję, rozejrzałem się, próbując to sprawdzić. Trochę szukał. –