1、什么是对象转型
一个基类的引用类型变量可以“指向”其子类的对象。
一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
可以使用《 引用变量 instanceof 类名 》来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting)。
2、 向上转型
假设,FatherClass类是ChildClass类的父类:
ChildClass c = new ChildClass();
FatherClass fClass = c ;//向上转型
// FatherClass fClass = new ChildClass();//向上转型
3、 向下转型 (instanceOf)
假设,FatherClass类是ChildClass类的父类:
4、 什么时候需要使用对象的转型
当形参定义的是父类类型变量(引用),但实参有可能是该形参类型的子类对象时。
当返回值类型是父类类型,但返回的具体对象是子类对象时。
一个基类的引用类型变量可以“指向”其子类的对象。
一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
可以使用《 引用变量 instanceof 类名 》来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting)。
2、 向上转型
假设,FatherClass类是ChildClass类的父类:
ChildClass c = new ChildClass();
FatherClass fClass = c ;//向上转型
// FatherClass fClass = new ChildClass();//向上转型
3、 向下转型 (instanceOf)
假设,FatherClass类是ChildClass类的父类:
public void test(FatherClass father){
if (father instanceof ChildClass) {//判定father引用指向的对象类型是否是ChildClass类型
ChildClass child = (ChildClass) father;//向下转型。需要强制转换符
}
}
4、 什么时候需要使用对象的转型
当形参定义的是父类类型变量(引用),但实参有可能是该形参类型的子类对象时。
当返回值类型是父类类型,但返回的具体对象是子类对象时。
当父类引用指向子类对象的时候,需要访问子类新增的属性和方法时。
向下类型转换示例代码下载地址: