一、向上造型
- 超类型的引用指向派生类的对象
- 点出来什么,看引用的类型
//下面等价
FlyingObject[] ft;
FlyingObject[] ft = null;
//下面两种等价
FlyingObject[] ft = {};
FlyingObject[] ft = new FlyingObject[0];
二、方法的重写(override)
-
发生在父子类中,方法名相同,参数列表相同, 方法体不同
-
如果父类的方法不能满足子类的需求,子类可以重写的父类的方法。此时当用父类的引用进行点方法的时候,不会在调用父类的方法,而是会调用new的派生类的重写方法。(没有重写使用父类的方法,重写后则调用重写的方法)
-
遵循”两同两小一大“原则
-
两同:方法名、参数列表相同
-
两小:派生类方法的返回值类型小于或等于超类的方法
- 超类的返回值为:void,派生类也必须是void
- 超类的返回值是基本数据类型,派生类也必须是基本数据类型且相同类型
- 超类的返回值类型是引用数据类型,派生类的返回值要小于或等于引用数据类型(超类大,派生类小)
派生类方法抛出的异常小于或等于超类方法的
-
一大:访问权限大于或等于超类
-
三、重写与重载的区别
重写: 发生在父子类中,方法签名相同即方法名相同,参数列表相同,方法体不同
运行期绑定:看对象类型来调用方法
重载: 发生在一个类中(属于一个类),方法签名不同即方法名相同,参数列表不同,方法体不同
编译期绑定:看参数或引用的类型来绑定方法