首页 > 基础资料 博客日记
[JAVASE] 类和对象(四) - 多态
2024-05-24 04:00:05基础资料围观380次
目录
一. 多态的定义
1.1 基本概念
多个不同的对象进行同一行为时, 所产生的结果不同.
以上三个类, 在子类 Rect 与 Cycle 中,重写了父类中的draw 方法.
在测试类 Test 中, 实现了向上转型.
至此, 多态的定义以及多态的实现条件 已经呈现, 接下来,详细的解读一下多态的三个实现条 件.
二. 多态的实现条件
2.0 基本介绍
多态的实现条件:
1. 在继承体系下2. 实现向上转型
3. 实现重写 与 动态绑定
2.1 向上转型 与 向下转型
2.1.1 向上转型
向上转型: 父类引用 引用 子类的对象.
2.1.2 向上转型的方式
向上转型的三种方式:
a. 直接赋值
b. 方法传参
c. 方法返回值
2.1.3 向下转型
向下转型: 子类引用 引用 父类的对象.
2.2 重写 与 动态绑定
2.2.1 重写
重写:
a. 方法名相同.
b. 参数列表相同(个数, 类型, 顺序).
c. 返回值可以不同, 但是必须构成父子类关系.
2.2.2 重写的注意事项
重写的注意事项:
a. 被 static , final, private 修饰的方法, 不能够被重写.
(被static修饰, 表示这个方法属于类, 不属于对象
被final修饰, 表示这个方法不可变
被private修饰, 表示这个只能够在当前类中进行访问)
b. 子类中重写方法的访问权限需要 大于等于 父类中重写方法的访问权限.
2.2.3 静态绑定 与 动态绑定
静态绑定: 在程序编译时就能确定要执行的是哪一个方法. 典型代表是 重载.
动态绑定: 在程序编译时不能够确定要执行的是哪一个方法, 需要等到程序运行时才能够确 定. 典型代表是 重写.
我的理解:
![]()
在程序编译的时候先找到的是 父类中重写方法的地址, 等到程序运行的时候再将父类中重写方法的地址替换为 子类中重写方法的地址, 这时调用的就是子类的重写方法. 这样就实现了动态绑定.
三. 重写与重载的区别
重写:
a. 方法名相同.
b. 参数列表相同(个数, 类型, 顺序).
c. 返回值可以不同, 但是必须构成父子类关系.
重载:
a. 方法名相同
b. 参数列表不同(个数, 类型, 顺序).
c. 与返回值无关.
四. 总结
a. 多态的定义
b. 多态的三个实现条件(继承体系, 向上转型, 重写与动态绑定)
c. 重写与重载的区别
重点理解: 多态的三个实现条件
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- springboot~3.x项目中使用集成测试
- Java测试类、工具类与JavaBean对比解析
- SpringBoot-日志
- springboot~http2的支持
- 解疑释惑 - 日志体系之 slf4j + logback 组合(一)
- Web server failed to start. Port 8080 was already in use. 端口被占用
- Springboot 项目配置多数据源
- 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 05
- 剑指offer-23、搜索⼆叉树的后序遍历序列
- 一个表示金额的数字是 100000000L,这是多少米?