Konstruktory nie są dziedziczne, ponieważ mogą powodować dziwne i niezamierzone zachowanie. Bardziej szczegółowo, jeśli dodałeś nowy konstruktor do klasy bazowej, wszystkie klasy pochodne pobierają instancję tego konstruktora. W niektórych przypadkach jest to złe, ponieważ może twoja klasa bazowa określa parametry, które nie mają sensu dla twoich klas pochodnych.
Powszechnie podawanym przykładem jest to, że w wielu językach klasa bazowa dla wszystkich obiektów (potocznie zwana "Obiektem") ma konstruktor bez parametrów. Jeśli konstruktory zostałyby odziedziczone, oznaczałoby to, że wszystkie obiekty mają konstruktor bez parametrów i nie ma sposobu, aby powiedzieć: "Chcę, aby ludzie, którzy tworzą instancję tej klasy, dostarczali parametry X, Y i Z, w przeciwnym razie ich kod nie powinien się kompilować. " Dla wielu klas ważne jest, aby określone parametry były właściwe dla ich prawidłowego funkcjonowania, a uczynienie konstruktorów nie-dziedzicznymi jest częścią sposobu, w jaki autorzy klas mogą zagwarantować, że niektóre parametry są zawsze zdefiniowane.
Edytuj, aby odpowiadać na komentarze: Ramesh wskazuje, że jeśli konstruktory zostałyby odziedziczone tak, jak chciałby, to zawsze mógłby przesłonić konstruktory klasy bazowej używając prywatnych konstruktorów deklarowanych w każdej klasie pochodnej. Jest to z pewnością prawda, ale jest to problem logistyczny związany z tą strategią. Wymaga to, aby piszący klas pochodnych uważnie obserwowali klasy bazowe i dodawali prywatnego konstruktora, jeśli chcą blokować dziedziczenie konstruktora klasy podstawowej. Nie tylko jest to dużo pracy dla osób piszących klasy pochodne, ten rodzaj ukrytej zależności między klasami jest dokładnie taki, który może powodować dziwne zachowanie.
Ramesh - nie jest tak, że to, co opisałeś byłoby niemożliwe do dodania do języka. Zasadniczo nie jest to robione, ponieważ takie zachowanie może wprowadzać w błąd ludzi i prowadzić do wielu dodatkowych debugowania i pisania kodu.
Quintin Robinson zapewnia kilka bardzo wartościowych odpowiedzi na to pytanie w komentarzach, które zdecydowanie warto przeczytać.
duplikat http://stackoverflow.com/questions/426484/why-are-constructors-nie-inited –