"引用"与多态的关系笔试经验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了"引用"与多态的关系笔试经验相关的知识,希望对你有一定的参考价值。

参考技术A

"引用"与多态的关系笔试经验

  引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

  例

  Class A; Class B : Class A…; B b; A& ref = b;

  拓展阅读:

  以现实情况举一个例子说明多态的应用:

  假设有一个“小提琴演奏者”类,有一个“钢琴演奏者”类,还有一个“萨克斯演奏者”类。它们都是弹奏乐器的,都继承自“乐器演奏者”类。“乐器演奏者”类有个方法叫做“演奏”。三种不同的子类有不同的“演奏”方法实现(拉、弹、吹)。

  那么指挥家如果要指挥一个交响乐,那么有两个办法:

  一,分别说“小提琴拉起来”、“钢琴弹起来”、“萨克斯吹起来”

  二,只需要说一句“乐器们都演奏起来”

  显然第一种方法是很笨拙的。因为指挥家不需要知道每种乐器演奏者具体怎么样去演奏乐器(是吹还是弹还是拉),他只需要指挥就可以了。因此应当采用第二种做法。

  那么如何实现第二种做法呢?那就是把三种乐器演奏者子类看成是“乐器演奏者”父类。指挥家只需要调用“演奏”方法就可以了。至于具体是怎么去演奏,指挥家是不管的。

  虽然代码上写的是把具体的\'演奏者子类看成了父类,调用的是父类的“演奏”方法,但是因为子类继承了父类的“演奏”方法并且重写为更加具体的实现(拉或者弹或者吹),创建实例的时候创建的是子类的实例(构造方法是子类的,只不过看成是父类去用),所以实际执行的时候会去调用子类的“演奏”方法。因此,究竟是该拉还是该弹还是该吹,指挥家不必在意,这个判断由java虚拟机完成了。

  这个就是一个多态的应用。

  再扩展一下,假设以后又多了一种乐器,架子鼓也来了。同样,架子鼓也是一种乐器。如果不用多态,那么指挥家的代码也又要改了,就要说“架子鼓打起来”,而用多态的话就不用改啦,仍然是“乐器们都演奏起来”。你体会到了吗?

;

java多态

多态的概述

多态是继封装、继承之后,面向对象的第三大特性。

最终多态体现为父类引用变量可以指向子类对象。

多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。

在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

 

多态的定义与使用格式

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();

变量名.方法名();

 

普通类多态定义的格式

父类 变量名 = new 子类();

如: class Fu {}

    class Zi extends Fu {}

    //类的多态使用

Fu f = new Zi();

抽象类多态

接口多态

 

 

    多态-成员的特点

 

l  多态成员变量

 

当子父类中出现同名的成员变量时,多态调用该变量时:

 

编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。

 

运行时期:也是调用引用型变量所属的类中的成员变量。

 

简单记:编译和运行都参考等号的左边。编译运行看右边。

 

l 多态成员方法

编译时期:参考引用变量所属的类,如果类中没有调用的方法,编译失败。

运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。

简而言之:编译看左边,运行看右边。

 

instanceof关键字

 

        

 

以上是关于"引用"与多态的关系笔试经验的主要内容,如果未能解决你的问题,请参考以下文章

引用与多态的关系

笔试倒数第1,面试逆袭!含泪写下这篇教师招聘经验贴

笔试倒数第1,面试逆袭!含泪写下这篇教师招聘经验贴

经验谈

数字IC面试笔试经验及最新试题分享

C++面试经验