当前位置: 首页 > news >正文

多态

一、多态概述
image

【】多态,多种形态。

函数的重载就是一种多态。

对象也有多态。一个对象具备多种形态,new cat()既是cat也是animal。

【】形式体现上,父类创建的变量指向了子类对象。

图片

 

图片

 【】一个对象两种形态就是多态,左边动物右边猫两种形态

 

【】多态用在接口上,形式是:接口的变量指向接口的实现子类的对象

【】多态用在类上,形式是:父类的变量指向子类的对象

 
 二、多态的好处

 【】将内容封装变成对象,指挥对象做事情,这已经是将问题简单化。但是对象多了,又变复杂了。

能不能指挥更多对象做事情,所以找他们的共性发现,都属于动物。就只会动物做事情,下面的猫狗🐖都去做事情了。

 

图片

 

【】多态是方法的多态,不是属性的

【】既可以animal a=c;

也可以animal a=cat c;

还可以直接拿着c当a使用。

 

图片

 前面定义的animal,后面凡是继承animal的子类,都能被使用

图片

 
 三、多态的弊端
 

图片

 

要想使用后期功能就应该用其子类自己的变量去调用,父类变量只能调用子类继承重写的方法。

用指挥父类的方法调用子类的,父类有的才能指挥。

 【】多态的使用前提:继承重写(或实现重写)

图片

 

 
 四、多态中类型转换:自动向上提升限制子类特有功能、强制向下转换使用子类特有功能

  【】一旦向上类型提升,cat变为animal,就只能使用animal的功能,但指向对象是cat,那么就只能用对应的cat的功能了

【】向上转型限制子类特有功能

图片

 【】强制转换。将变量a类型从animal转为cat,

【】向下转型使用子类特有功能

图片

【】小猫,小猫可以转为动物,也可以转回来。但是无论怎么转变,它的对象到底是小猫。

【】转型不能把父类对象给转型或者把一种子类转型为另外一种。

只能子类自动提升为父类和转型成父类后再强制转换成子类。主角是子类。

image

【】举例:毕姥爷的两个方法都被毕老师继承:教学(但是被毕老师重写为教java)、钓鱼

毕老师实际有三个方法:教学java(重写父类方法)、钓鱼(继承父类)、看电影(自己的特有方法)

毕老师自动转换为毕姥爷类型后,只能使用毕姥爷声明过的方法。

想用自己的特有方法,需要强制转换为毕老师类型。

【】一会变为父类型,一会变回本类型。

image

image

 
 
五、需要强制转型前判断具体类型
【】具体类型判断:instanceof类似==

【】instance 例子,instanceof(类)的实例=类的对象

【】在强制转型时容易出现转型失败,所以转型之前通常都会加入这种逻辑判断,这样可以增加代码健壮性。

必须要加上判断。

image

【】a是animal类型的变量,需要判断传进来的具体是何种类型的时候,用instanceof来判断具体类型

【】instanceof只能判断引用型数据类型

 
 
 
 
 
 
 
 
 
 
http://www.wxhsa.cn/company.asp?id=414

相关文章:

  • 数学分析 I
  • 高等代数 I
  • JAVA反编译神器CFR
  • 记录一下由于VS中qt的插件自动升级引发的编译问题
  • flutter右滑返回直接返回到native问题
  • ck随笔
  • 如何用变量与函数实现随机生成数字交互?附完整教程
  • 离散数学与结构 note
  • Java基础
  • Linux系统简单源码安装NGINX版本1.28.0
  • 终结“网络无助感”:Tenable CEO解析漏洞管理与安全心态
  • 部分算法记录
  • Kubernetes资源管理方式
  • 2025公众号排版工具深度测评报告:10款主流产品功能对比与场景化选择指南
  • 即将举办2025年11月埃及汽配博览会埃及国际汽配展Autotech
  • 生产搭建Hadoop
  • JBT 10389-2014
  • 生产搭建Rabbitmq
  • 【项目实战】基于i.MX8M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码
  • unity TimeLine SignalTrack
  • macOS Tahoe 26 RC (25A353) Boot ISO 原版可引导镜像下载
  • 企业如何选型低代码平台?4款产品测评
  • 对于退款/拒付这类逆向订单操作需要创建新的单号么
  • torch版本应该跟cuda、cudacnn的版本一致
  • 小白如何零成本搭建一个属于自己的私人知识库
  • 安装mysql数据库,从下载到配置的详细教程
  • 根据端口找到进程id
  • 双因子验证网站(aspsms.com/en/registration/)无法注册——Capcha Error
  • MathType7下载安装2025最新下载+安装教程(附安装包)
  • mysql导入数据库,从基础命令到高效技巧