关于对象多态性,不太理解解决方案
关于对象多态性,不太理解Java codeclass A{public void fun1(){System.out.println(A中方法)}}class B
关于对象多态性,不太理解
Java codeclass A{ public void fun1(){ System.out.println("A中方法"); }}class B extends A{ public void fun1(){ System.out.println("B中方法1"); } public void fun2(){ System.out.println("B中方法2"); }}public class test02{ public static void main(String args[]){ A a = new B(); a.fun1(); }}
很简单的代码,只是不明白为什么a调用fun1()方法后为什么出现的是"B中方法1",这里不是已经把a变成父类A中的实例了么?
A a = new B()这个一直不是很理解,希望高手能给讲下,谢谢!
[解决办法] A a = new B();
//这种对象实例化方法叫做“对象上转型”
// 即:用父类(A)声明对象(a),用子类(B)去实例化(new)对象(a)
//对象上转型特点:对象(a)只能调用父类(A)中的成员或方法。不能调用父类中没有的方法!
//如果父类中的成员或方法被子类覆盖了(被重写),则调用子类的方法。
//当调用 fun1()时发现其被子类重写了,所以调用子类的 fun1();