多态
(源自http://blog.csdn.net/thinkghoster/article/details/2307001)
用父类的对象来接受子类的实例(向上转型)
注意:父类中不存在的方法会被遗失
问题1、该引用调用的方法是属于哪个(基/子)类的方法
答案:子类方法
问题2、该引用调用的域属于哪个(基/子)类的域
答案:父类的域,为此区分一般域都会定义为private的
多态调用方法顺序:
this.show(); super.show(); this.show((super) O); super.show((super) 0);
最后若用用父类的对象来接受子类的实例,且该show()被重写,那么此时输出的就是子类的show();
向上转型:
将子类对象转为父类对象,会遗漏子类中存在而父类中不存在的方法。益:代码整洁
向下转型:将父类对象转为子类对象,直接强制转换,需用instanceOf判断下。益:能调用子类中存在而父类不存在的方法