Java之多态性

来源:互联网 发布:安卓好的看书软件 编辑:程序博客网 时间:2024/05/17 15:38

1、多态的定义

多态性是允许你将父对象设置成为和它的一个或更多的子对象相等的技术,赋值后,父对象就可以根据子对象的特性以不同的方式进行运作。

简单来说就是允许将子类类型的指针赋值给父类类型的指针,只要这样的赋值产生了,多态也就产生了,因为实行了“向上转型”。


2、区别两个概念:

覆盖和重载

覆盖(override):是将子类重新定义分类得虚函数的做法。与多态相关

重载(overload):是指允许存在多个同名函数,而这些函数的参数表不同(记住只能是参数表不同,可以是不同类型的参数,也可以是参数个数不同,抑或两者都不同)。重载的实现是:编译器根据函数的不同参数表,对同名函数进行修饰,然后这些函数就变成了不同的函数。

注意点:

(1)重载:对重载函数的调用,在编译器间就已经确定了,是静态的。也就是说,他们的地址在编译期间就绑定了( 也称早绑定)。

特征:

* 形同的范围(在同一个类中)

* 函数名字相同

* 参数不同

*与返回类型无关

*virtual 关键字可有可无)c++中


(2)(覆盖)多态:当子类重新定义了父类的虚函数后,父类指针根据赋给它不同的子类指针,动态地调用属于子类的该函数,这样的函数在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期间绑定的(也称晚绑定)。

特征:

* 不同的范围(分别位于派生类和基类)

* 函数的名字相同

* 参数相同

* 返回值的类型相同

* 基类的函数必须有virtual关键字)c++中

Tips:静态方法不能被覆盖成非静态的方法


结论:重载只是一种语言特性,与多态无关,与面向对象无关。

“不要犯傻,如果不是晚绑定,它就不是多态”


3、多态的作用

面向对象的四个基本特征:抽象,继承,封装和多态。

封装可以隐藏实现细节,使得代码模块化。

继承可以扩展已存在的代码块(类)。

封装和继承目的是为了代码重用。

多态的目的是为了实现接口重用。


——笔记摘自《Java程序员面试宝典》


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机无法加载程序秒退怎么办 电脑账户密码忘记了怎么办 玩绝地求生卡顿怎么办 地下城总运行时间错误怎么办 逆战更新太慢怎么办 win7我的电脑没了怎么办 剑灵启动游戏慢怎么办 网页页面结束进程也关不掉怎么办 开机就启动微信怎么办 微信突然无法启动怎么办 微信发送太频繁怎么办 微信在电脑上打不开文件怎么办 微信照片电脑上打不开怎么办 换一部手机微信怎么办 微信支付宝停止运行怎么办 剑三重制版卡顿怎么办 剑三客户端更新不动了怎么办 安装包安装失败怎么办有内存 qq飞车换手机了怎么办 qq飞车求婚失败戒指怎么办 改脸型皮肤会下垂怎么办 情侣关系弄僵了怎么办 用微信交话费没有到账怎么办 微信交错话费了怎么办 微信缴费交错了怎么办 微信支付被投诉怎么办 微信q币充值错误怎么办 微信充值流量充错了怎么办 微信延迟到账怎么办 移动流量充错了怎么办 qq充话费等待发货怎么办 qq充值话费没到账怎么办 电信话费冲错了怎么办 微信手机充错话费充空号怎么办 京东地址写错了怎么办 京东售后不退款怎么办 冲了话费不到账怎么办 币安维护充值怎么办 微信话费未到账怎么办 微信话费交错了怎么办 北京移动查话费余额怎么办