![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki oto interfejs:
Oraz klasę abstrakcyjną:
Kiedy dziedziczę po klasie Fnc oraz implementuje jednocześnie interfejs, mogę utworzyć klasę pochodną bez konstruktora!
Jak zmusić aby klasa Pochodna musiała zawierać konstruktor? Gdy dodam jakąś funkcję do interfejsu też muszę ją zaimplementować w klasie Pochodna. Gdy klasa Pochodna nie dziedziczyłaby po Fnc, interfejs działa tak jak powinien i wymaga aby Pochodna miała konstruktor. Również kiedy usunę konstruktor z klasy Bazowej (Fnc) zgłaszany jest błąd, że nie ma konstruktora, co może sugerować, że konstruktor w klasie Pochodnej jest odziedziczony z klasy bazowej ((IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ?) Pozdrawiam Ten post edytował bongdigibonbon 29.06.2007, 09:02:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Cytat Przecież od wersji 4.0 konstruktory nie podlegają dziedziczeniu. Choć z przytoczonego przeze mnie przykładu tak można wnioskować :/ Oczywiście. Dlatego, skoro masz zaimplementowany konstruktor, to pochodna nie musi go implementować. Wymuszenie kontruktora za pomocą interfejsu objęło tylko klasę abstakcyjną - pochodna nie musi się stosować do interfejsu. Jeśli jednak w ciele konstruktora klasy pochodnej dodasz wywołanie parent::__construct(), to już musi uwzgledniać ono nagłówek wymuszany interfejsem. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 21:02 |