Jestem bardzo zdezorientowany z nadpisującymi konstruktorami. Konstruktor nie może być przesłonięta jest wynikiem tego, co mogę dostać kiedy szukałem go w google moje pytanie jestNadpisywanie konstruktorów
public class constructorOverridden {
public static void main(String args[]) {
Sub sub = new Sub();
sub.test();
}
}
class Super {
Super() {
System.out.println("In Super constructor");
test();
}
void test() {
System.out.println("In Super.test()");
}
}
class Sub extends Super {
Sub() {
System.out.println("In Sub constructor");
}
void test() { // overrides test() in Super
System.out.println("In Sub.test()");
}
}
gdy uruchamiam to mam wynik jako
In Super constructor
In Sub.test()
In Sub constructor
In Sub.test()
pls zwrócić uwagę na metodę badawczą w podklasie jest wykonywany. Czy pokazuje, że konstruktor Superclass został nadpisany. Czy to prawda?
Następnie, jakie podejście należy zastosować, unikając "wywoływania nadpisanych metod w konstruktorach"? Co starałem się osiągnąć jest podstawowy przepływ w konstruktorze super klasy wywoływanie metod abstrakcyjnych init(), build(), a następnie fill(). Tak więc wszystkie podklasy muszą przejść ten sam przepływ! – Akshat
@Akshat: Cóż, brzmi to tak, jakby należało do kategorii "bardzo jasno dokumentować". Zazwyczaj * istnieje * sposób projektowania wokół tego, ale trudno jest podać ogólny przepis. –
Jeśli mógłbyś podać link do tych sposobów, byłoby wspaniale! – Akshat