花开两生面,人生佛魔间。
转型
父子对象之间的转换分为了向上转型和向下转型
向上转型 : 通过子类对象(小范围)实例化父类对象(大范围),这种属于自动转换
向下转型 : 通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换
向上转型
- 上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象。
1 | Father f=new Son(); |
- 注意事项:
- 上转型对象是由子类创建的,但上转型对象会失去子类的一些属性和方法。
- 上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。
- 上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
- 上转型对象可以再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。
1 | class A { |
向下转型
- 下转型对象:父类引用的对象转换为子类的类型(强制类型转换)。
1 | Father f = new Son(); |
- 注意事项:
- 向下转型必须先向上转型,否则会发生异常。
- 下转型对象可以引用子类和父类的属性和方法。
1 |
|