对象的向上转型
1.同多态
2.向上转型一定是正确的,安全的
3.弊端:一旦向上转型为父类,就无法调用子类特有的方法
4.解决方案:对象的向下转型还原
对象的向下转型
- 格式
类似于强制数据类型转换
父类名称 对象名1 = new 子类名称(); 向上转型
子类名称 对象名2 = (子类名称)对象名1; 向下转型
- 含义:将父类对象还原为本类的子类对象
public class Fu2 {
int num = 20;
public void methodFu(){
System.out.println(num);
}
}
public class Zi1 extends Fu1 {
int num = 10;
public void methodZi(){
System.out.println(num);
}
}
public class Multi {
public static void main(String[] args) {
Fu2 obj = new Zi2();
obj.methodFu();编译看左边运行看右边,左边Fu2有methodFu(),右边Zi2可以继承Fu2的methodFu(),所以正确
obj.methodZi(); 错误写法!!,编译看左边运行看右边,左边Fu2没methodZi(),所以会出现编译错误
Zi2 one = (Zi2)obj;向下类型转换
one.methodFu();正确
one.methodZi();正确
}
}
instanceof
关键字
- 作用:识别父类引用的对象,本类的子类
- 格式:
对象 instanceof 类名称