在java中调用子类的方法

use*_*858 3 java inheritance

如何在下面的场景中调用所有类的print*()意味着在main()方法中调用A的printA(),B的printB()和C的printC().

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
    }
}
Run Code Online (Sandbox Code Playgroud)

Osk*_*lin 11

通常,你做这样的事情,它被称为覆盖:

class A
{
  public void print(){System.out.println("A.printA()");}
}

class B extends A
{
    public void print(){System.out.println("B.printB()");}
}

class C extends A
{
    public void print(){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) {
        a.print();
    }
}
Run Code Online (Sandbox Code Playgroud)