java多态,父类的引用指向子类的对象,instanceof函数

本文深入解析多态概念,包括重载、重写及父类引用指向子类对象的现象。通过实例展示向上转型与向下转型的过程,以及如何在编译与运行时确定方法调用。同时,介绍了instanceof函数的使用,简化类型检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态

多态即事物的多种多样的状态。

1.重载重写都是多态的表现。重载重写此处不再赘述。
2.父类的引用指向子类的对象

下面通过几个实例来详细讲解这个知识点:
(1)定义父类Person
在这里插入图片描述
(2)定义子类Student
在这里插入图片描述
(3)定义测试类Test
在这里插入图片描述
Person person = new Student();这里为是”向上转型“,即父类的引用指向子类的对象。(引用的知识请看前几篇博文,此处不再赘述)。

通过person调用方法调用的是Person类的方法还是Student类?
通过输入person.的提示我们知道要想编译通过,应该调用Person类的方法。如下
在这里插入图片描述
编译通过。
在这里插入图片描述
运行的是子类重写的方法。

总结:编译的时候看赋值等号的左边,运行的时候看等号右边。

那么怎么才能在Person person = new Student();这句下利用person调用Student类的方法?
答案是”向下转型“,实际上就是强制类型转化,代码如下
在这里插入图片描述
这样就OK了。

instanceof函数

下面为这个函数的使用方法例子:
在这里插入图片描述
运行中关键在于:
传参Person p = student;然后instanceof检测参数属于Student 类,进入if表达式。这个函数避免了大量重复性检查变量类型 的函数的定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值