public static void fun(A a){
a.fun1() ; // 调用覆写父类中的fun1()方法
//a.fun3(); 通过(a instanceof B)可以证明a是B的实例,那么为什么不能调用B类中的方法呢
}
};
为什么子类对象向上转型后就不能调用子类里面的方法了,这样只能调用父类中被子类覆写的方法有什么意义呢? 向上转型之后只能调用父类中有的方法,因为虽然你用了子类进行了初始化,向上转型了之后就是父类类型了,而要调用子类的方法,必须向下转型才行。这样做是当你不知道要传入的对象是什么类型的时候,可以用父类的类型来接收,比如说:Person类,Stduent,Worker都是继承了Person类,当你不知道传入是Student还是Worker的时候,都可以用Person接收,这就避免了接收对象出错的问题。 |