多态、向上(向下)类型转换、instanceof运算符

多态:同一个引用类型,使用不同的实例而执行不同操作

一、多态可以减少类中的代码量,

可以提高代码的可扩展性和可维护性。


二、实现多态的三个条件:

1.继承的存在(继承是多态的基础,没有继承就没有多态)

2.子类重写父类的方法(多态下调用子类重写后的方法)

3.父类引用变量指向子类对象(子类到父类的类型转换)



多态形式1:父类Pet做形参,子类Dog做实参


多态形式2:父类做类型,子类实例化。




@向上转型——子类转父类,属于自动类型转换

Pet pet=new Dog();

Pet.eat();

向上转型的规则:

*将一个父类的引用指向一个子类对象,自动进行类型转换;

*此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

*此时通过父类引用变量无法调用子类特有的方法。




@向下转型——父类转子类,属于强制类型转换

基本数据类型之间进行强制类型转换是对被强制转换类型做手术。例如:

Double d=5 ;

Int a =(int)   5.0;

引用数据类型之间强制转换时是还原子类的真实面目,而不是给子类做手术,例如:

Pet pet=new Dog();

Dog dog=(Dog)pet;//正确

Penguin pgn=(Penguin)pet;//错误




(这就要用到instanceof运算符进行强制类型转换)



多态形式3:父类作为方法返回子,子类实例化。










三、instanceof运算符


语法:  对象 instanceof   类或者接口

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为truefalse.



!!!在进行引用类型转换时,先通过instanceof运算符进行类型判断,再进行相应的强制类型转换,这样可以有效的避免出现类型转换异常。

PS:即先判断,后强转!!!

1.使用时要注意上下级关系

2.instanceof通常和强制类型转换结合使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值