面向对象三大特征(三)—多态学习笔记

1.概述

多态是指在继承/实现情况下的一种现象,表现为:对象多态、行为多态。

(1)对象多态:同一个对象(事物),可以以不同形态呈现。

ee8807e098324128a94e6ea6f7671f5a.png

 (2)行为多态:同一行为,有不同表现。

26fc7a27443f48b4811530f762238c7b.png

6b7e1cb0368e451481845ed99dce4d1a.png


 2.多态的前提:

(1)有继承/实现关系

(2)存在父类引用子类对象

(3)存在方法重写

3.注意事项:

多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。

67e7b50074e0452097d217138267b4f3.png

d58717ce887f47e2a9b65ee8276efbee.png

4.使用多态的好处:

(1)在多态形式下,右边对象是解耦合的(可以随时切换其他对象),更便于扩展和维护。

d243ddfd88ea4a48b41df810d1c9b095.png

(2)定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利。

89b75a0265994840b02b2051f5a05d84.png

 5.多态下存在一个问题:多态下不能使用子类的独有功能。

6.类型转化:

(1)自动类型转换:父类 变量名 = new 子类;

(将子类赋值给父类,小范围的赋值给大范围)

(2)强制类型转换: 子类 变量名 = (子类)父类变量;

(将父类赋值给子类,大范围的赋值给小范围)

①注意:存在继承/实现关系就可以在编译阶段进行强制类型转换,编译阶段不会报错。

但运行时,若发现对象的真实类型与强转后的类型不同,则会报强制类型转换异常(ClassCastException)的错误出来。

7.推荐做法(先判断要强转对象的真实类型):

强转前,Java建议使用instanceof关键字,判断当前对象的真实类型,再强转。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值