Java之多态性
来源:互联网 发布:安卓好的看书软件 编辑:程序博客网 时间:2024/05/17 15:38
1、多态的定义
多态性是允许你将父对象设置成为和它的一个或更多的子对象相等的技术,赋值后,父对象就可以根据子对象的特性以不同的方式进行运作。
简单来说就是允许将子类类型的指针赋值给父类类型的指针,只要这样的赋值产生了,多态也就产生了,因为实行了“向上转型”。
2、区别两个概念:
覆盖和重载
覆盖(override):是将子类重新定义分类得虚函数的做法。与多态相关
重载(overload):是指允许存在多个同名函数,而这些函数的参数表不同(记住只能是参数表不同,可以是不同类型的参数,也可以是参数个数不同,抑或两者都不同)。重载的实现是:编译器根据函数的不同参数表,对同名函数进行修饰,然后这些函数就变成了不同的函数。
注意点:
(1)重载:对重载函数的调用,在编译器间就已经确定了,是静态的。也就是说,他们的地址在编译期间就绑定了( 也称早绑定)。
特征:
* 形同的范围(在同一个类中)
* 函数名字相同
* 参数不同
*与返回类型无关
(*virtual 关键字可有可无)c++中
(2)(覆盖)多态:当子类重新定义了父类的虚函数后,父类指针根据赋给它不同的子类指针,动态地调用属于子类的该函数,这样的函数在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期间绑定的(也称晚绑定)。
特征:
* 不同的范围(分别位于派生类和基类)
* 函数的名字相同
* 参数相同
* 返回值的类型相同
(* 基类的函数必须有virtual关键字)c++中
Tips:静态方法不能被覆盖成非静态的方法
结论:重载只是一种语言特性,与多态无关,与面向对象无关。
“不要犯傻,如果不是晚绑定,它就不是多态”
3、多态的作用
面向对象的四个基本特征:抽象,继承,封装和多态。
封装可以隐藏实现细节,使得代码模块化。
继承可以扩展已存在的代码块(类)。
封装和继承目的是为了代码重用。
多态的目的是为了实现接口重用。
——笔记摘自《Java程序员面试宝典》
- 胡博君解Java之多态性
- Java基础之多态性
- java之多态性
- java基础之多态性
- Java之多态性
- Java基础知识之多态性
- JAVA面向对象之多态性
- java学习笔记之多态性
- java夯实基础之多态性
- Java之旅(9)多态性
- java之旅 (五)多态性
- java三大特征之 多态性
- JAVA多态性 之动态连接详解
- Java编程基础篇之多态性
- java基础之对象的多态性
- JAVA三大特性之三---多态性
- 黑马程序员——Java之多态性
- Java 学习之 多态性的理解
- 深度学习 7. MatConvNet 相关函数解释说明,MatConvNet 代码理解(三)cnn_mnist_experiments.m 的注释
- Ubuntu下安装Genymotion安卓模拟器
- 获取checkbox选中当前行的值
- pat 1015
- 物理与程序
- Java之多态性
- 使用ZooKeeper实现软负载均衡(原理)
- IPC
- 欢迎使用CSDN-markdown编辑器
- 基于processing的简单音频可视化
- 【深度学习:CNN】Batch Normalization解析(1)
- C#学习过程中解决的问题
- 机器学习 周志华 读书笔记 第1章 绪论
- 了解lucene的基本概念