Как вызывать print *() всех классов в нижеприведенном сценарии, означает printA(), A B (B) печати B() и C printC() C внутри метода main().Способы вызова дочернего класса в java
class A
{
public void printA(){System.out.println("A.printA()");}
}
class B extends A
{
public void printB(){System.out.println("B.printB()");}
}
class C extends A
{
public void printC(){System.out.println("C.printC()");}
}
class DemoInheritence
{
public static void main(String[] str){
printIt(new A());
printIt(new B());
printIt(new C());
}
public static void printIt(A a) {
//Here I wants to call A's printA(), B's printB() and C's printC()
//So how can I do this
}
}
Любое другое решение, а не использование 'instanceof' – user1041858
@ user1041858, если вы хотите избежать использования «instanceof», вы должны перейти с переопределением метода печати, что означает, что класс A и его дети имеют метод, называемый print(), и его дети переопределяют этот метод (вы даже можете обеспечить его выполнение, создав метод и абстрактный абзац класса A). Но лучшим способом было бы создать интерфейс с методом печати и заставить все классы реализовать этот интерфейс. Таким образом, каждый класс будет иметь версию метода print(). Скажите, пожалуйста, если вы хотите, чтобы я объяснил это дальше. – comanitza
@ user1041858 Если вы хотите определить, имеет ли объект определенный тип, скажите, пожалуйста, чтобы я мог объяснить это. – comanitza