对象转型

 1、什么是对象转型

一个基类的引用类型变量可以“指向”其子类的对象。
 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
可以使用《 引用变量 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、 什么时候需要使用对象的转型

当形参定义的是父类类型变量(引用),但实参有可能是该形参类型的子类对象时。
当返回值类型是父类类型,但返回的具体对象是子类对象时。

当父类引用指向子类对象的时候,需要访问子类新增的属性和方法时。


向下类型转换示例代码下载地址:

https://github.com/benxiaohai8888/Javase/tree/master/doctor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值