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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。状态、
形态、姿态指的就是行为特征。
多态在
然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法
的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。
所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实
多态的好处
其实,这个需要不断的实践、思考和总结,自己对多态好处的体会才会深刻。
多态的好处最根本上还是围绕代码的可复用性和可扩展性这两点上面,似乎封装 和继承也是为了这两个目标,不过侧重点不太一样罢了。
首先,从使用多态类/接口的外部模块的角度看,它看到的是一个通用的封装好 的可以复用的行为规范(比如示例中的eat行为,HttpServlet中的doGet等 行为),而不必为了每一个子类或实现类的具体行为特征去开发一套相同的代码。
super.eat();〃人类都要吃饭
System.out.pri ntl n("我细嚼慢咽地吃!");
}
}
使用人类的外部模块:
package com.example;
/**
*外部模块,使用Person类
*可以用Man类和Womans的对象来配置此模块
*
*/
public class OuterModule {
示例
人类:
package com.example;
public class Pers on {
public void eat() {
System.out.pri ntln(”我在吃饭!");
}
}
男人类:
package com.example;
public class Man exte nds Pers on {
n.多型现象,多态性;多机组合形式;
按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、 形态、姿态等等。
那是什么东西呢?在面向对象的编程语言里面(当然就包括Java了)就是某个
方法或函数。
那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有 多个方法体,就是方法的实现。 而方法的相同与否是由方法签名决定的。
public void eat() {
super.eat();〃人类都要吃饭
System.out.pri ntl n(”我狼吞虎咽地吃!");
}
}
女人类:
package com.example;
public class Woma n exte nds Pers on {
public void eat() {
其根本原因还是在于调用该方法的 引用类型变量指向的是一个子类或接口实现 类的对象。所以,我们只要为这个变量配置不同的子类或接口实现类的对象即可 获得不同的执行结果。
这好像有点类似于C语言的函数指针,本质上不过是把一段代码包装成数据, 然后就可以将它赋值某种特殊类型的变量(实际上代表的是数据存放的地址而 已),比如函数指针或引用类型变量,然后就可以用该变量来找到该段代码,从 而执行该段代码。
比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,
而人类具有的某个行为在男人类和女人类中是有着不同体现的, 比如人类的吃饭 这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。例子不是很恰 当,但意思就是这么个意思。
所以说,Java里面多态的技术基础就是 方法的覆盖,当然,在Java中覆盖不仅 仅发生在类的继承/扩展上,还可能发生在 接口的实现上。只有覆盖才能满足两 个方法签名相同而实现不同,却又能统一在同一个类(超类或接口)的同一个方 法之中。
现在这个类,另一个实现在另一个类。
而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却 具有不同的行为特征)自相矛盾了。
所以,这两个类肯定是有某种联系的。 我们再想想,什么概念是能够让两个不同 的类却又能称为同一个类的? 答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具 体和抽象”的思想。
public static void main( Stri ng[] args) {
Person p = new Ma n();〃相当于配置
p.eat();
p = new wenku.baidu.comoma n();〃相当于配置
p.eat();
执行结果可以看出,对同一个类(Person)的同一个方法(eat)的调用,执行结果却不一样,这就是多态!
类的继承与多态性实验报告
1.介绍
2.什么是多态
3.多态在Java中的技术基础
4.示例
5.多态的好处
6.总结
介绍
之前的文章介绍过类的 封装性和继承性,现在是时候聊聊面向对象编程的三大特
性之一的最后一个类的多态性了。
多态的基础是继承(包括了接口的实现)和方法的覆盖。
什么是多态
多态对应的英文单词是polymorphism,百度翻译给出的翻译是:
相关文档
最新文档