对象转型
向上造型
什么是向上造型?
子类对象赋给父类引用。
父类引用指向子类对象。
子类转成父类 默认进行(父类引用指向子类对象)。
为什么需要向上造型?
子类对象可以放入父类类型的数组中。
父类数组同一管理所有子类对象。
减少代码冗余
向上造型的格式:
父类类型 引用=子类对象;
Pet p=new Dog();
向上造型的特性:
向上造型后的父类引用,只能调用到父类中的成员,不能调用到子类特有的成员。
向下转型(强制类型转换):
什么是类型转换?
就是将一个类型的引用,转换成另一个类型。
为什么需要类型转换?
父类引用无法调用到子类特有的成员如果必须要调用,就需要类型转换。
父类转成子类 强制进行。
强制类型转换的注意事项:
如果将一个A子类的引用强转成B子类,会发生类型转换异常ClassCastException为了防止这样的异常发生在强转前,一般要先判断一下实际的类型
关键字:
instanceof:测试左边的对象是否是右边类的实例,
如果是返回true否则fasle。
<对象> instanceof <类型>
方法重写(方法覆盖,override)
什么是方法重写?
子类不满父类中某个方法的功能,重新编写父类方法的现象。
什么需要方法重写?
父类中的方法不能满足子类的要求。
如何进行方法重写?
简单的方法重写:
在子类中编写一个和父类中的某个方法,方法名相同,参数列表相同,访问修饰符和返回值也相同的方法。
方法重写的效果:
在向上造型的前提下
指向子类对象的父类引用
在调用被子类重写的方法时
运行的是子类重写后的方法
方法重写的运行期绑定:
父类引用在运行方法时
jvm会检测这个父类引用指向的
真实类型,调用真实类型重写后的方法
方法重写的详细规则:
必须相同的方法名,参数列表
可以不同的
返回值:
基本数据类型。
必须相同引用数据类型。
可以返回其子类
访问修饰符:
子类重写的方法的访问修饰符,
不能比父类更严格
访问修饰符类型:
public
protected
默认
private
重载和重写的区别?
位置 方法名 参数 返回值 修饰符
重载:同类 相同 不同 无关 无关
重写:子类 相同 相同 相同 相同
重载:只看同名方法的参数列表。编译期绑定
重写:子父类方法要一模一样。运行期绑定