"引用"与多态的关系笔试经验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了"引用"与多态的关系笔试经验相关的知识,希望对你有一定的参考价值。
参考技术A"引用"与多态的关系笔试经验
引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。
例
Class A; Class B : Class A…; B b; A& ref = b;
拓展阅读:
以现实情况举一个例子说明多态的应用:
假设有一个“小提琴演奏者”类,有一个“钢琴演奏者”类,还有一个“萨克斯演奏者”类。它们都是弹奏乐器的,都继承自“乐器演奏者”类。“乐器演奏者”类有个方法叫做“演奏”。三种不同的子类有不同的“演奏”方法实现(拉、弹、吹)。
那么指挥家如果要指挥一个交响乐,那么有两个办法:
一,分别说“小提琴拉起来”、“钢琴弹起来”、“萨克斯吹起来”
二,只需要说一句“乐器们都演奏起来”
显然第一种方法是很笨拙的。因为指挥家不需要知道每种乐器演奏者具体怎么样去演奏乐器(是吹还是弹还是拉),他只需要指挥就可以了。因此应当采用第二种做法。
那么如何实现第二种做法呢?那就是把三种乐器演奏者子类看成是“乐器演奏者”父类。指挥家只需要调用“演奏”方法就可以了。至于具体是怎么去演奏,指挥家是不管的。
虽然代码上写的是把具体的\'演奏者子类看成了父类,调用的是父类的“演奏”方法,但是因为子类继承了父类的“演奏”方法并且重写为更加具体的实现(拉或者弹或者吹),创建实例的时候创建的是子类的实例(构造方法是子类的,只不过看成是父类去用),所以实际执行的时候会去调用子类的“演奏”方法。因此,究竟是该拉还是该弹还是该吹,指挥家不必在意,这个判断由java虚拟机完成了。
这个就是一个多态的应用。
再扩展一下,假设以后又多了一种乐器,架子鼓也来了。同样,架子鼓也是一种乐器。如果不用多态,那么指挥家的代码也又要改了,就要说“架子鼓打起来”,而用多态的话就不用改啦,仍然是“乐器们都演奏起来”。你体会到了吗?
;java多态
多态的概述
多态是继封装、继承之后,面向对象的第三大特性。
最终多态体现为父类引用变量可以指向子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
多态的定义与使用格式
多态的定义格式:就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
l 普通类多态定义的格式
父类 变量名 = new 子类();
如: class Fu {}
class Zi extends Fu {}
//类的多态使用
Fu f = new Zi();
抽象类多态
接口多态
多态-成员的特点
l 多态成员变量
当子父类中出现同名的成员变量时,多态调用该变量时:
编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。
运行时期:也是调用引用型变量所属的类中的成员变量。
简单记:编译和运行都参考等号的左边。编译运行看右边。
l 多态成员方法
编译时期:参考引用变量所属的类,如果类中没有调用的方法,编译失败。
运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。
简而言之:编译看左边,运行看右边。
instanceof关键字
以上是关于"引用"与多态的关系笔试经验的主要内容,如果未能解决你的问题,请参考以下文章