Jestem zdezorientowany, jakie mogą być problemy, jeśli konstruktor zostanie odziedziczony z klasy podstawowej. Cpp Primer Plus mówi:
Konstruktory różnią się od innych metod klasowych tym, że tworzą nowe obiekty, podczas gdy inne metody są wywoływane przez istniejące obiekty . Jest to jeden z powodów, dla których konstruktory nie są dziedziczone . Dziedziczenie oznacza, że obiekt pochodny może korzystać z metody klasy podstawowej, ale w przypadku konstruktorów obiekt nie istnieje, dopóki konstruktor nie wykona swojej pracy.
Rozumiem, że konstruktor jest wywoływany przed zakończeniem budowy obiektu.
Jak może to prowadzić do problemów, jeśli klasa potomna dziedziczy ( przez dziedziczenie mam na myśli, że klasa potomna jest w stanie przesłonić metodę klasy nadrzędnej itp. Nie tylko dostęp do metody klasy nadrzędnej ), konstruktor nadrzędny?
Rozumiem, że nie ma potrzeby jawnego wywoływania konstruktora z poziomu kodu [nie jestem tego jeszcze świadomy.] Z wyjątkiem tworzenia obiektów. Nawet wtedy możesz to zrobić za pomocą mechanizmu wywołującego nadrzędnego konstruktora [In cpp, using ::
or using member initialiser list
, In java using super
]. W Javie jest wymuszenie, aby wywołać go w 1. linii, rozumiem, że jest to zapewnienie, aby najpierw utworzyć obiekt nadrzędny, a następnie kontynuować budowę obiektu podrzędnego.
Może to zastąpić . Ale nie mogę wymyślić sytuacji, w których może to stanowić problem. Jeśli dziecko odziedziczy konstruktora nadrzędnego, co może pójść nie tak?
Czy to po to, aby uniknąć dziedziczenia niepotrzebnych funkcji. Czy jest w tym coś więcej?