类的继承与多态性实验报告 联系客服

发布时间 : 星期一 文章类的继承与多态性实验报告更新完毕开始阅读e9fdcc66dbef5ef7ba0d4a7302768e9950e76e52

类的继承与多态性实验报告

目录

1. 2. 3. 4. 5. 6.

介绍 什么是多态

多态在Java中的技术基础 示例 多态的好处 总结

介绍

之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。

多态的基础是继承(包括了接口的实现)和方法的覆盖。

什么是多态

多态对应的英文单词是polymorphism,百度翻译给出的翻译是:

n.多型现象,多态性; 多机组合形式;

按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。

那是什么东西呢?在面向对象的编程语言里面(当然就包括Java了)就是某个方法或函数。

那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。而方法的相同与否是由方法签名决定的。 所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。状态、形态、姿态指的就是行为特征。

多态在Java中的技术基础

然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。 所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。

而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。

所以,这两个类肯定是有某种联系的。我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的?

答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。

比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,而人类具有的某个行为在男人类和女人类中是有着不同体现的,比如人类的吃饭这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。例子不是很恰当,但意思就是这么个意思。

所以说,Java里面多态的技术基础就是方法的覆盖,当然,在Java中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。只有覆盖才能满足两个方法签名相同而实现不同,却又能统一在同一个类(超类或接口)的同一个方法之中。

示例

人类:

package com.example; public class Person { public void eat() { } } System.out.println(\我在吃饭!\男人类:

package com.example; public class Man extends Person { } public void eat() { } super.eat();//人类都要吃饭 System.out.println(\我狼吞虎咽地吃!\女人类:

package com.example; public class Woman extends Person { public void eat() { } } super.eat();//人类都要吃饭 System.out.println(\我细嚼慢咽地吃!\使用人类的外部模块:

package com.example; /** * * 外部模块,使用Person类 * 可以用Man类和Woman类的对象来配置此模块 * */ public class OuterModule { public static void main(String[] args) { Person p = new Man();//相当于配置 p.eat(); p = new Woman();//相当于配置 p.eat();