当前位置:首页 » 《关注互联网》 » 正文

[JAVASE] 类和对象(四) - 多态

23 人参与  2024年05月25日 12:17  分类 : 《关注互联网》  评论

点击全文阅读


目录

一. 多态的定义

        1.1 基本概念

 二. 多态的实现条件 

        2.0 基本介绍

         2.1 向上转型 与 向下转型

                2.1.1 向上转型

                2.1.2 向上转型的方式

                 2.1.3 向下转型

         2.2 重写 与 动态绑定

                2.2.1 重写

                2.2.2 重写的注意事项 

                2.2.3 静态绑定 与 动态绑定

三. 重写与重载的区别

重写:

重载:

四. 总结 


一. 多态的定义

        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. 重写与重载的区别

重点理解: 多态的三个实现条件


点击全文阅读


本文链接:http://zhangshiyu.com/post/113327.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1