首页 > 基础资料 博客日记
[JAVASE] 类和对象(四) - 多态
2024-05-24 04:00:05基础资料围观163次
目录
一. 多态的定义
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进行投诉反馈,一经查实,立即删除!
标签: