521抽象类的定义

public void display() //成员方法display()

{

super.display(); //执行父类的显示方法

System.out.println(“教师代码:”+teacherID);

System.out.println(“教师职位:”+position);

System.out.println(“主讲课程:”+courseName);

}

}

完成该类的定义之后,还需要一个程序使用这些类并对它们进行测试,测试程序如下:

例5.4:对上边创建的类的覆盖方法进行多态性测试。

//polymorphismDemo.java

public class polymorphismDemo

{

public static void main(String [ ] args)

{

Citizen [] citizenObj={ new Student(“[***********] ”, ”纪杨”, ”男”, ”1974.5.21”, ”920150208”, ”1992.9.1”,540),new Teacher (“[***********] ”, ”姜氏”, ”女”, ”1967.2.21”, ”1201”, ”教授”, ”物理学”)};

{

System.out.println(“第”+i+”次:”);

citizenObj[i-1].display(); //显示对象信息

}

}

在测试程序中,生成了一个Citizen 类型数组,各元素是其不同子类的对象,这样就可以使用一个Citizen 类型的变量来引用子类的对象,循环调用不同类型对象的display()方法,如图

5.2所示。这是由两个子类的情况,当然在多个子类时,也可以产生随机下标,从数组中随机选择对象,这是一个多态性应用的简单例子。大家可以参照例5.1编译、运行程序,思考一下程序的运行结果。

要使用多态性机制,必须具备如下条件:

1)子类对象的方法调用必须通过一个父类的变量进行。比如上例的Citizen 类型数组。

2)被调用的方法必须是覆盖的方法即在父类中也有该方法。

3)子类的方法特征与父类必须一致。

4)子类方法的访问权限不能比父类更严格。

5.2抽象类

类是对现实世界中实体的抽象,但我们不能以相同的方法为现实世界中所有的实体做模型,因为大多数现实世界的类太抽象而不能独立存在。

例如,我们熟悉的平面几何图形类,对于圆、矩形、三角形、有规则的多边形及其他具体的图形可以描述它的形状并根据相应的公式计算出面积来的。那么任意的几何图形又如何描述呢?它是抽象的,我们只能说它表示一个区域,它有面积。那么面积又如何计算呢,我们不能够给出一个通用的计算面积的方法来,这也是抽象的。在现实生活中,会遇到很多的抽象类,诸如交通工具类、鸟类等等。

5.2.1 抽象类的定义

在Java 中所谓的抽象类,即是在类说明中用关键字abstract 修饰的类。

一般情况下,抽象类中可以包含一个或多个只有方法声明而没有定义方法体的方法。当遇到这样一些类,类中的某个或某些方法不能提供具体的实现代码时,可将它们定义成抽象类。

定义抽象类的一般格式如下:

[访问限定符] abstract class 类名

{

//属性说明

…………

//抽象方法声明

„„„„

//非抽象方法定义

„„„„„

}

其中,声明抽象方法的一般格式如下:

[访问限定符] abstract 数据类型 方法名([参数表]);

注意:抽象方法只有声明,没有方法体,所以必须以“;”号结尾。

有关抽象方法和抽象类说明如下:

1)所谓抽象方法,是指在类中仅仅声明了类的行为,并没有真正实现行为的代码。也就是说抽象方法仅仅是为所有的派生子类定义一个统一的接口,方法具体实现的程序代码交给了各个派生子类来完成,不同的子类可以根据自身的情况以不同的程序代码实现。

2)抽象方法只能存在于抽象类中,正像刚才所言,一个类中只要有一个方法是抽象的,则这个类就是抽象的。

3)构造方法、静态(static )方法、最终(final )方法和私有(private )方法不能被声明为抽象的方法。

public void display() //成员方法display()

{

super.display(); //执行父类的显示方法

System.out.println(“教师代码:”+teacherID);

System.out.println(“教师职位:”+position);

System.out.println(“主讲课程:”+courseName);

}

}

完成该类的定义之后,还需要一个程序使用这些类并对它们进行测试,测试程序如下:

例5.4:对上边创建的类的覆盖方法进行多态性测试。

//polymorphismDemo.java

public class polymorphismDemo

{

public static void main(String [ ] args)

{

Citizen [] citizenObj={ new Student(“[***********] ”, ”纪杨”, ”男”, ”1974.5.21”, ”920150208”, ”1992.9.1”,540),new Teacher (“[***********] ”, ”姜氏”, ”女”, ”1967.2.21”, ”1201”, ”教授”, ”物理学”)};

{

System.out.println(“第”+i+”次:”);

citizenObj[i-1].display(); //显示对象信息

}

}

在测试程序中,生成了一个Citizen 类型数组,各元素是其不同子类的对象,这样就可以使用一个Citizen 类型的变量来引用子类的对象,循环调用不同类型对象的display()方法,如图

5.2所示。这是由两个子类的情况,当然在多个子类时,也可以产生随机下标,从数组中随机选择对象,这是一个多态性应用的简单例子。大家可以参照例5.1编译、运行程序,思考一下程序的运行结果。

要使用多态性机制,必须具备如下条件:

1)子类对象的方法调用必须通过一个父类的变量进行。比如上例的Citizen 类型数组。

2)被调用的方法必须是覆盖的方法即在父类中也有该方法。

3)子类的方法特征与父类必须一致。

4)子类方法的访问权限不能比父类更严格。

5.2抽象类

类是对现实世界中实体的抽象,但我们不能以相同的方法为现实世界中所有的实体做模型,因为大多数现实世界的类太抽象而不能独立存在。

例如,我们熟悉的平面几何图形类,对于圆、矩形、三角形、有规则的多边形及其他具体的图形可以描述它的形状并根据相应的公式计算出面积来的。那么任意的几何图形又如何描述呢?它是抽象的,我们只能说它表示一个区域,它有面积。那么面积又如何计算呢,我们不能够给出一个通用的计算面积的方法来,这也是抽象的。在现实生活中,会遇到很多的抽象类,诸如交通工具类、鸟类等等。

5.2.1 抽象类的定义

在Java 中所谓的抽象类,即是在类说明中用关键字abstract 修饰的类。

一般情况下,抽象类中可以包含一个或多个只有方法声明而没有定义方法体的方法。当遇到这样一些类,类中的某个或某些方法不能提供具体的实现代码时,可将它们定义成抽象类。

定义抽象类的一般格式如下:

[访问限定符] abstract class 类名

{

//属性说明

…………

//抽象方法声明

„„„„

//非抽象方法定义

„„„„„

}

其中,声明抽象方法的一般格式如下:

[访问限定符] abstract 数据类型 方法名([参数表]);

注意:抽象方法只有声明,没有方法体,所以必须以“;”号结尾。

有关抽象方法和抽象类说明如下:

1)所谓抽象方法,是指在类中仅仅声明了类的行为,并没有真正实现行为的代码。也就是说抽象方法仅仅是为所有的派生子类定义一个统一的接口,方法具体实现的程序代码交给了各个派生子类来完成,不同的子类可以根据自身的情况以不同的程序代码实现。

2)抽象方法只能存在于抽象类中,正像刚才所言,一个类中只要有一个方法是抽象的,则这个类就是抽象的。

3)构造方法、静态(static )方法、最终(final )方法和私有(private )方法不能被声明为抽象的方法。


相关文章

  • 二年级教学计划
  • 二年级教学计划 一.本学期教学的指导思想: 1.重视以学生的已有经验知识和生活经验为基础,提供学生熟悉的具体情景,以帮助学生理解数学知识, 2.增加联系实际的内容,为学生了解现实生活中的数学,感受数学与日常生活的密切联系. 3.注意选取富有 ...查看


  • 产成品评估方法的探讨
  • 产成品评估方法的探讨 在现实的资产评估工作中,产成品价值的评估一般只在企业整体资产评估中才会遇到.在大多数情况下产成品价值量在企业总资产中所占的比例也不大,因此没有得到应有的重视,甚至不少评估师是以产成品的账面值确定其评估值的.1996年发 ...查看


  • 古塔的变形 1
  • 2013高教社杯全国大学生数学建模竞赛 承 诺 书 我们仔细阅读了<全国大学生数学建模竞赛章程>和<全国大学生数学建模竞赛参 赛规则>(以下简称为"竞赛章程和参赛规则",可从全国大学生数学建模竞赛 ...查看


  • 数学课程的实施策略
  • 数学课程的实施策略(重点教学与评价) 课堂教学是落实小学数学课程标准.达成小学数学课程目标的主要途径和基本环节.课堂教学应根据具体的教学内容,注重课程目标的整体实现,重视学生在学习活动中的主体地位,注重学生对基础知识.基本技能.基本思想.基 ...查看


  • 人身损害受伤人员误工损失日评定准则(中华人民共和国公安部GBT521-2004)
  • 人身损害受伤人员误工损失日评定准则(中华人民共和国公安部GB/T521-2004) 目 次 前言 II 1 范围 1 2 总则 1 3 术语和定义 1 4 头部损伤 1 5 面部损伤 2 6 颈部损伤 4 7 胸部损伤 5 8 腹部损伤 5 ...查看


  • MCS-51系列单片机控制的5层液压电梯系统
  • 目 录 概述„„„„„„„„„„„„„„„„„„„„„„„„„„„1 第一章 液压电梯简述„„„„„„„„„„„„„„„„„„„2 1.1 液压传动的概念„„„„„„„„„„„„„„„„„2 1.2 液压电梯介绍„„„„„„„„„„„„„„ ...查看


  • 实现线性传输的非线性光耦隔离电路的设计与分析
  • 实现线性传输的非线性光耦隔离电路的设计与分析 摘 要: 针对采用光敏二极管进行光耦合的线性光耦所搭建电路线性输出范围较窄的问题,选用光敏三极管进行光耦合的非线性双路光耦设计电路,并对电路进行了直流分析和低频交流分析.实验证明,该电路扩展了线 ...查看


  • 电子论文-LED光通量测试中的若干问题
  • 中国照明电器 CHINALIGHT&LIGHTING LED光通量测试中的若干问题 吕 正 (中国计量科学研究院北京100013) 摘要 简述积分球测量原理,提出测量中易被忽视的4个问题,以及一个重要但尚未解决的问题.关键词:积分球 ...查看


  • 合成股票多头策略
  • ETF 期权交易策略--合成股票多头 一.账户信息 国信证券--佛山南海大道证券营业部 投资者姓名:周桂冰 衍生品账号:[1**********]1 二.合成股票多头策略理论分析 1. 定义:合成股票多头策略是指利用期权复制股票收益的一种交 ...查看


热门内容