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

【Java学习】多态

目录

一、方法相同

二、方法重写

1.概念

2.条件

三、向上转型

1.概念

2.方式

四、方法绑定

五、多态

一、方法相同

方法相同要求方法名相同、参数列表相同、返回值类型相同(与两方法修饰的访问限定符相不相同、静态非静态状态相不相同无关),而且在子类与父类相同的方法中,子类那边方法的访问权限必须大于等于父类那边方法的访问权限

二、方法重写

1.概念

重写是由子类类变量引用赋给父类类变量引用后父类类变量引用里对原子类类变量里重写方法的选择去调用


2.条件

父类与子类中相同的方法符合存在的情况下,如果子类的方法是非静态的,再加上父类的方法符合以下条件则能实现子类对父类方法的重写:

  • 父类的那个要被重写的方法必须也是非静态的
  • 并且在父类的非静态方法中构造方法不能被重写

父类的构造方法的方法名必须与父类类名相同,子类的构造方法的方法名必须与子类类名相同,在子类那边的构造方法要重写必须方法名相同要与父类类名相同,在子类里不能实现它的这个构造方法,所以父类的构造方法不能重写

  • 父类那个要被重写的方法必须是要被直接对应的,不能被private修饰被包装
  • 父类那个要被重写的方法不能被定义为确定最终执行方法,不能被final修饰
  • 父类那个要被重写方法的返回类型要与子类重写方法的返回类型相同也可以呈继承关系的不同

三、向上转型

1.概念

子类类变量引用转类型为父类类变量引用就是向上转型

子类的似复刻变量的引用用父类的类变量来接时,父类类变量引用接收后所指向的似复刻变量变为了用父类类变量创的似复刻变量,如果子类那边有对应实现的重写方法,路径信息上还有多加子类类变量的重写方法路径信息在调用父类类变量的那个被重写的方法时会转为访问调用对应的子类重写的方法,除此之外子类类变量创的其它剩余下的似复刻变量部分引用的权限没有消失而是被隐藏,可通过对此父类类变量引用类型强转回子类类变量引用类型获取回子类类变量那边的被隐藏的权限,获取回子类类变量原本的全部访问权限(隐藏式父类类变量引用转回其子类类变量引用即向下转型)


2.方式

子类类变量引用是可类型安全地转为父类类变量引用的,此转类型不会丢失数据,是安全允许的可直接接转来转类型的,有赋值接转形参接转返回值类型接转

(向上转型是收敛式隐藏的减法减得多减得少都不会出什么事,而向下转型是加法,如果加的加上原来不属于它的就出错了,所以向下转型是不安全的,类型转换需要强转)


四、方法绑定

绑定即对方法多个选择的确定

  • 调用重载的方法时,方法名相同的方法有多个,在编译时根据传参情况确定下要调用的方法,即静态绑定
  • 调用重写的方法时,要调用的方法子类与父类都有且相同,在执行时根据重写的对象确定要执行的那个方法,即动态绑定

一个方法先经静态绑定后经动态绑定,最终确定要执行的方法

方法重载在同一个类中实现,方法重写在不同类即父类与子类中实现

五、多态

一个方法不同对象截然不同调用效果,这个父类方法是多态的能够实现根据对象自动选择调用对应方法,即一个父类方法不同子类对象自动对应上各自子类方法解决方法调用时选择哪个方法调用的选择问题,全部直接对它调用,不用自己判断选择调用了

http://www.lryc.cn/news/540569.html

相关文章:

  • Oracle 深入理解Lock和Latch ,解析访问数据块全流程
  • 什么是事务?并发事务引发的问题?什么是MVCC?
  • 【JavaEE进阶】MyBatis通过注解实现增删改查
  • Uptime Kuma实现业务接口自定义逻辑监控
  • 基于 JavaWeb 的 Spring Boot 调查问卷管理系统设计和实现(源码+文档+部署讲解)
  • 新手小白学习棒球规则·棒球1号位
  • 单元测试的策略有哪些,主要包括什么?
  • 深度学习之图像回归(一)
  • Docker 替换到 Containerd (nerdctl相关指令)
  • Ollama API 参考文档
  • PHP房屋出租出售高效预约系统小程序源码
  • 学习threejs,使用MeshBasicMaterial基本网格材质
  • Kafka Connect 功能介绍
  • 从卡顿到丝滑:火山引擎DeepSeek-R1引领AI工具新体验
  • Vulnhub-node靶机教学
  • php处理图片出现内存溢出(Allowed memory size of 134217728 bytes exhausted)
  • 网络IP跳动问题解决详
  • Linux firewalld 常用命令
  • LeetCode 热题 100 49. 字母异位词分组
  • 从 DeepSeek 到飞算 JavaAI:AI 开发工具如何重塑技术生态?
  • OceanBase 初探学习历程之二——操作系统参数最佳实践
  • 全面指南:使用JMeter进行性能压测与性能优化(中间件压测、数据库压测、分布式集群压测、调优)
  • 《机器学习实战》专栏 No12:项目实战—端到端的机器学习项目Kaggle糖尿病预测
  • 【vue项目中如何实现一段文字跑马灯效果】
  • DeepSeek 细节之 MLA (Multi-head Latent Attention)
  • Python爬虫具体是如何解析商品信息的?
  • lerobot调试记录
  • 【Word转PDF】在线Doc/Docx转换为PDF格式 免费在线转换 功能强大好用
  • Jenkins 配置 Credentials 凭证
  • Datawhale Ollama教程笔记5