Java零基础之-多态

多态涉及到的概念:

  1. 向上转型(upcasting)
    子类型–>父类型
    又被称为:自动类型转换

  2. 向下转型(downcasting)
    父类型–>子类型
    又被称为:强制类型转换。【需要加强制类型转换符】
    (无论是向上转型还是向下转型,两种类型之间必须要有继承关系,没有继承关系,程序是无法编译通过的。)

使用多态语法机制的一个例子:

Animal和Cat之间存在继承关系,Animal是父类,Cat是子类

Animal a1 = new Cat();//java中允许这种语法:父类型引用指向子类型对象。

解释: new Cat() 创建的对象的类型是Cat,a这个引用的数据类型是Animal,可见它们进行了自动类型转换(向上转型)。

错误的例子(向下转型)

“向下转型“经常会出现类型转换异常:java.lang.ClassCastException

Animal a2 = new Cat();
Bird tom = (Bird)a2;//Bird也是Animal的子类,但是Bird和Cat没有关系。

错问改正:
通过使用instanceof语句来判断a2是否属于Bird类型。

//instanceof运算符只有两个运算结果:true说明数据类型匹配,false说明数据类型不匹配
if(a2 instanceof Bird)
	Bird bird = (Bird)a2;
if(a2 instanceof Cat)
	Cat tom = (Cat)a2;

Java规范中要求:在强制类型转换之前,采用instanceof运算符先判断,避免java.lang.ClassCastException异常。

多态的作用?

降低程序的耦合度,提高程序的扩展力(面向抽象编程!!!)

实例代码坐标:D:\Code\IDEAProject\DuoTai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值