多态中向下转型的理解

父类引用指向子类对象中,若要调用子类独有的方法需要使用向下转型来强制类型转换为子类引用。
举例:

//父接口  USB接口
public interface USB{
	void service();
}

//子实现类优盘类 实现usb接口
public class UDisk implements USB{
	//子类实现父接口的方法
	public void service(){
		System.out.println(“优盘开始传输数据……”);
	}
	//子类独有方法
	public void show(){
		System.out.println(“我是一个优盘”);
	}
}
//子实现类鼠标类 实现usb接口
public class Mouse implements USB{
	//子类实现父接口的方法
	public void service(){
			System.out.println(“鼠标开始工作……”);
	}
	//子类独有方法
	public void showInfo(){
		System.out.println(“我是一个鼠标”);
	}
}
public class Test{
	//返回父类引用
	public USB getDistance(int num){
		USB usb;
		if(num==1){
			usb = new UDisk();
		}else{
			usb = new Mouse();
		}
		return usb;
	}
	
	public static void main(String[] args){
		Test test = new Test();
		USB usb = test.getDistance(1);
		//此时拿到了指向UDisk对象的父类引用,但这个时候usb不能调用子类独有的方法,需要强制类型转化
		if(usb instanceof UDisk){
			//说明是优盘
			UDisk uDisk =UDisk)usb;//强制类型转换后,指明是一个优盘,这时可以调用子类独有的方法
			uDisk.show();
		}else{
			//说明是鼠标
			……
		}
		
	}
}

说明:
初学者在初学多态时不容易理解向上转型和向下转型。向下转型可以这样理解:
调用Test类的getDistance(1)方法后,返回的是一个装在盒子里的优盘,这个时候你只能看到一个盒子,里面装的是优盘还是鼠标你看不见,使用x光照一下盒子(使用instanceof确定是优盘还是鼠标),这个时候确定是什么后在盒子上写上是优盘还是鼠标,别人就能够知道了。
在这里插入图片描述

图片上红笔圈起来的子类就相当于在盒子上写上名字,然后能确定是什么类型的数据后,在等号前面接收一下,就完成了向下转型(强制类型转换)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值