public abstract class A { public void sayHello(){ System.out.println("sayHello in A"); } public abstract void sayHi(); }
子类B
public class B extends A{ @Override public void sayHi(){ System.out.println("sayHi() in B"); } }
子类C
public class C extends A{ @Override public void sayHi() { System.out.println("sayHi() in C"); } }
测试一下效果
public class Test { public static void main(String[] args){ A a = new B(); a.sayHello(); a.sayHi(); a = new C(); a.sayHello(); a.sayHi(); } }
结果是:
sayHello in A
sayHi() in B
sayHello in A
sayHi() in C
------
下面说下错误的写法。
在父类里没有写那个虚函数。
父类A
public abstract class A { public void sayHello(){ System.out.println("sayHello in A"); } }
子类B
public class B extends A{ public void sayHi(){ System.out.println("sayHi() in B"); } }
测试
public class Test { public static void main(String[] args){ A a = new B(); a.sayHello(); //a.sayHi(); 这句话是会报错的。、 //用父类指针指向子类,如果父类中没有这个方法,你即便指向的子类有这个方法 //也没有办法用这个父类指针来调用这个方法。(如果你真的想要这么做,就必须要审明一个虚函数。) } }