文档详情

Java语言程序设计教程第2版 教学课件 作者 邱桃荣 主编 第5章 继承和多态.ppt

发布:2017-08-16约5.52千字共34页下载文档
文本预览下载声明
第5章 继承与多态 学习导读 本章讨论面向对象的编程(OOP)及其关键技术:继承和多态。 继承性是软件复用的一种形式,对降低软件复杂性行之有效。继承性同时是面向对象程序设计语言的特点,采用对象但没有继承性的语言是基于对象的语言,但不是面向对象的语言,这是两者的区别。 多态性允许以统一的风格处理已存在的变量及相关的类,使增加系统中新功能变得容易。 课程结构 5.1 继承 5.2 抽象类 5.3 接口 5.4 多态性 5.1 继承 5.1 继承 1.继承定义 继承性是软件复用的一种形式。新类由已存在的类生成,通过保留它们的属性和行为,并且根据新类的要求对性能加以修改,添加新的属性和行为。 5.1 继承 如果子类只从一个父类继承,则称为单继承;如果子类从一个以上父类继承,则称为多继承。注意 Java不支持多重继承,但它支持“接口”概念。接口使Java获得了多重继承的许多优点,摒弃了相应的缺点。 5.1 继承 2.继承的实现 Java语言中是通过关键字extends来实现单继承的。简单的实现格式如下: class 子类名 extends 父类名{ 类体 } 注意: 如果在格式中没有通过extends关键字来标明父类名,这并不是意味着该类无父类,相反,它表示该类是java.lang.Object的子类。 5.1 继承 例5.1 类继承的示例。 定义一个BaseClass类和DerivedClass类,其中BaseClass是DerivedClass的父类.程序清单见BaseClass.java和DerivedClass.java.运行结果如  图5-1. 5.2 抽象类 在现实生活中,可以发现这样的现象:许多实物抽象出成为一个共同的类别,如“交通工具”,但是“交通工具”并直接对应着实际存在的类别如卡车、自行车、三轮车等。 “交通工具”等只是作为一个抽象概念存在,对一组固定实现的抽象描述,并不对应具体的概念。因此,在面向对象程序设计中,可以将这些抽象描述定义为抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。 由于抽象类对一组具体实现的抽象性描述,所以抽象体是不能修改的。通常抽象类不具备实际功能,只用来派生子类。 5.2 抽象类 1.抽象方法 Java语言中,用关键字abstract修饰的方法为抽象方法。语法格式形如: abstract 返回值类型 方法名([形式参数]); 抽象方法只有方法头没有方法体,即只提供方法的规格说明,没有具体的实现。 注意: 1)final关键字不能修饰抽象方法。这是因为final是不可修改的方法是最终的方法,而抽象方法没有方法体,能被派生类进行覆盖; 2)static是不能修饰抽象方法的。静态方法占据固定内存空间,而抽象方法根本就不可能运行,不会加载到内存中。所以,static关键字不能修饰抽象方法。 5.2 抽象类 2.抽象类 抽象类是用关键字abstract修饰的类为抽象类。语法格式形如: abstract class 抽象类名 { 类体 } 5.2 抽象类 注意: 抽象类只是具体实体的抽象描述,是不可以实例化对象。 尽管抽象类定义构造方法是没有语法错误,但是没有实际意义。抽象类中可以定义非抽象方法,也可以定义抽象方法。 抽象方法在它的派生子类中可以覆盖,来实现具体功能。 抽象类派生出的子类,必须对抽象类中的抽象方法重写。 5.2 抽象类 例:一个抽象类的例子.定义一个抽象类AbstractClassExample以及该类的子类DerivedAbstractClass,程序清单分别见AbstractClassExample.java和DerivedAbstractClass.java. 程序的运行结果见图5-2. 5.3 接口 Java语言不支持多继承,但是在有的情况下需要使用多继承。 Java语言可以通过接口概念,一方面实现多继承,同时避免“二义性问题”的产生,另一方面为Java语言在支持单继承机制的前提下实现多态提供了方便。 从编程的角度看,Java语言定义的接口实际上是一组抽象方法和常量的集合,为其他类提供运算的外部说明。接口为一个或多个类提供一个行为规范,具体的实现在这些类中完成,这些类之间并不存在层次关系。通过接口可以了解对象的实例方法的原型,而不需要了解这些方法的具体实现。接口的存在有效解决了如何实现多继承,同时避免了由于多继承产生的“二义性问题”。 5.3 接口 1.接口的格式定义 Java语言中,接口是通过关键字interface来实现定义的,具体格式如下: [public] interface 接口名 [extends 父接口名表]{ 接口体 } 接口名的定义规则同类名的规则。接口可以有继承关系,通过关键字extends实现继承。接口体中定义
显示全部
相似文档