任务3-创建考试系统中的试题类.ppt

上传人:wuy****n92 文档编号:80479385 上传时间:2023-03-23 格式:PPT 页数:70 大小:1.48MB
返回 下载 相关 举报
任务3-创建考试系统中的试题类.ppt_第1页
第1页 / 共70页
任务3-创建考试系统中的试题类.ppt_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《任务3-创建考试系统中的试题类.ppt》由会员分享,可在线阅读,更多相关《任务3-创建考试系统中的试题类.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、任务任务3 3创建考试系统中的试题类创建考试系统中的试题类学习情境一学习情境一(项目开发准备项目开发准备)Java程序设计项目化教程(第2版)清华大学出版社学习目标学习目标 l了解面向对象的基本特性。了解面向对象的基本特性。l掌握类的定义和对象的创建。掌握类的定义和对象的创建。l掌握方法、变量的定义与使用。掌握方法、变量的定义与使用。l熟悉类的访问权限。熟悉类的访问权限。l掌握继承的使用。掌握继承的使用。l掌握抽象类和接口的使用。掌握抽象类和接口的使用。l了解包的创建和引用。了解包的创建和引用。Java程序设计项目化教程(第2版)清华大学出版社3.1 任务描述任务描述 创建考试系统中所需要的试

2、题类(创建考试系统中所需要的试题类(Testquestion类类)l属性:属性:包括包括试题内容、答案、用户选择的答案等。试题内容、答案、用户选择的答案等。l方法:获取取试题、方法:获取取试题、设置选择的答案、获取选择的答案、设置选择的答案、获取选择的答案、设置标准答案、获取标准答案、检查答案正确与否等。设置标准答案、获取标准答案、检查答案正确与否等。Java程序设计项目化教程(第2版)清华大学出版社3.2 技术要点技术要点 面向对象编程概述面向对象编程概述l 类类 l对象对象 l继承继承 l抽象类和接口抽象类和接口 l包包 Java程序设计项目化教程(第2版)清华大学出版社面向对象编程概述面

3、向对象编程概述l面向对象编程的基本概念面向对象编程的基本概念 l面向对象的编程思想面向对象的编程思想 l面向对象的基本特性面向对象的基本特性 Java程序设计项目化教程(第2版)清华大学出版社万物皆对象万物皆对象世界是由什么世界是由什么组成的?成的?名胜名胜 人人 物品物品 动物动物 ,植物,植物 Java程序设计项目化教程(第2版)清华大学出版社身身边边的的对对象象布兰尼布兰尼朱丽叶朱丽叶顾客顾客姓名:朱丽叶姓名:朱丽叶年龄:年龄:28体重:体重:52千克千克操作:操作:购买商品购买商品姓名:布兰尼姓名:布兰尼职衔:收银员职衔:收银员年龄:年龄:35体重:体重:60千克千克操作:操作:收款收

4、款打印账单打印账单Java程序设计项目化教程(第2版)清华大学出版社对对象的特征象的特征属性属性属性属性对象具有的各种特征象具有的各种特征每个每个对象的每个属性都象的每个属性都拥有特定有特定值例如:布例如:布兰尼和朱尼和朱丽叶的体重不一叶的体重不一样 60kg 布兰尼布兰尼属性属性 35岁岁收银员布兰尼收银员布兰尼 Java程序设计项目化教程(第2版)清华大学出版社对对象的特征象的特征方法方法方法方法对象象执行的操作行的操作 打单打单 收银收银 方法方法 刷卡刷卡 收银员布兰尼收银员布兰尼Java程序设计项目化教程(第2版)清华大学出版社对象的属性和方法对象的属性和方法列出尼古拉斯列出尼古拉斯

5、凯奇奇驾驶的的这辆法拉利法拉利F360 Spider的属性和方法的属性和方法列出小狗列出小狗对象的属性和方法象的属性和方法属性:属性:品牌:法拉利品牌:法拉利 型号:型号:F360 Spider 颜色:黄色颜色:黄色 价格:价格:380万元万元方法:方法:发动发动 停止停止 加速加速属性:属性:颜色:白色颜色:白色方法:方法:叫叫 跑跑 吃吃Java程序设计项目化教程(第2版)清华大学出版社小结小结1说一一说教室里的教室里的对象象描述他描述他们的属性和方法的属性和方法 颜色:黑色颜色:黑色品牌:品牌:BENQ投影投影姓名:张三姓名:张三年龄:年龄:20学习学习类型:白炽灯类型:白炽灯开开关关变

6、亮变亮变暗变暗材制材制:木质木质支撑物品支撑物品Java程序设计项目化教程(第2版)清华大学出版社封装封装对象同象同时具有属性和方法两具有属性和方法两项特性特性对象的属性和方法通常被象的属性和方法通常被封装封装在一起,共同体在一起,共同体现事物的特性,事物的特性,二者相二者相辅相承,不能分相承,不能分割割谁看见过只有谁看见过只有“完完好的零件和颜色好的零件和颜色”而不能开动的汽车而不能开动的汽车?Java程序设计项目化教程(第2版)清华大学出版社封装的示例封装的示例接口 采购经理罗杰斯先生法拉力公司.迪斯尼汽车公司.市场经理雪莉女士 要求Java程序设计项目化教程(第2版)清华大学出版社 封装

7、的示例封装的示例有选择地提供数据法拉力公司迪斯尼汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本Java程序设计项目化教程(第2版)清华大学出版社封装的示例封装的示例实体法拉力公司实体迪斯尼汽车公司 Auti Ltd.Buto Ltd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算工资发出订单编制必要报告Java程序设计项目

8、化教程(第2版)清华大学出版社从对象抽象出从对象抽象出“类类”抽取出下列对象的属性和方法的共同特征抽取出下列对象的属性和方法的共同特征 顾客顾客 Java程序设计项目化教程(第2版)清华大学出版社类类顾客客类轿车类 类是模子,确定对象将会拥有的类是模子,确定对象将会拥有的特征(属性)和行为(方法)特征(属性)和行为(方法)v类是对象的类型类是对象的类型不同于不同于int类型:具有方法型:具有方法 各种口味的球状冰淇淋各种口味的球状冰淇淋 球状冰淇淋模子球状冰淇淋模子Java程序设计项目化教程(第2版)清华大学出版社类类v类类是是用用于于组组合合各各个个对对象象所所共共有有操操作作和和属属性性的

9、的一一种种机制机制形状类形状类动物类动物类汽车类汽车类类的示例类的示例“类是具有相同属性和行为的一组对象的集合类是具有相同属性和行为的一组对象的集合”Java程序设计项目化教程(第2版)清华大学出版社类和对象的区别类和对象的区别 类是概念模型,类是概念模型,定义对象的所定义对象的所 有特性和所需有特性和所需 的操作的操作对象是真实的模型对象是真实的模型类和对象类和对象类和对象类和对象类定义实体类定义实体对象是实际的实体对象是实际的实体类是对象的原型类是对象的原型类是对象的原型类是对象的原型所有属于同一个类所有属于同一个类所有属于同一个类所有属于同一个类的对象都具有相同的对象都具有相同的对象都具

10、有相同的对象都具有相同的特性和操作的特性和操作的特性和操作的特性和操作Java程序设计项目化教程(第2版)清华大学出版社小结小结2类和和对象有什么区象有什么区别呢?呢?类是抽象的概念,是抽象的概念,仅仅是模板,比如是模板,比如说:“人人”对象是一个你能象是一个你能够看得到、摸得着的具体看得到、摸得着的具体实体,比如:体,比如:“小布什小布什”小布什小布什普京普京克林顿克林顿Java程序设计项目化教程(第2版)清华大学出版社面向对象编程的基本概念面向对象编程的基本概念 1 对象对象 (Object)(Object)对象是系统中用来描述客观事物的一个实体,它是构成系统的一个对象是系统中用来描述客观

11、事物的一个实体,它是构成系统的一个基本单位。在面向对象的程序中,对象就是一组变量和相关方法的集合,基本单位。在面向对象的程序中,对象就是一组变量和相关方法的集合,其中变量表明对象的属性,方法表明对象所具有的行为。其中变量表明对象的属性,方法表明对象所具有的行为。2 2 类类 (Class)(Class)类是具有相同属性和行为的一组对象的集合,它为属于该类的所有对类是具有相同属性和行为的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。可以象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。可以说类是对象的抽象化表示,对象是类的一个实例。说类是对

12、象的抽象化表示,对象是类的一个实例。3 3 消息消息 (Message)(Message)对象之间相互联系和相互作用的方式称为消息。,一个消息只要由对象之间相互联系和相互作用的方式称为消息。,一个消息只要由5 5个个部分组成:发送消息的对象、接收消息的对象、传递消息的方法、消息部分组成:发送消息的对象、接收消息的对象、传递消息的方法、消息的内容以及反馈信息。对象提供的服务是由对象的方法来实现,因此发的内容以及反馈信息。对象提供的服务是由对象的方法来实现,因此发送消息实际上就是调用对象的方法。通常,一个对象调用另一个对象中送消息实际上就是调用对象的方法。通常,一个对象调用另一个对象中的方法,即完

13、成了一次消息传递的方法,即完成了一次消息传递。Java程序设计项目化教程(第2版)清华大学出版社面向过程的程序设计面向过程的程序设计 Java程序设计项目化教程(第2版)清华大学出版社面向对象的编程思想面向对象的编程思想 面向对象程序设计是把把复杂的问题按照现实世界中存在面向对象程序设计是把把复杂的问题按照现实世界中存在的形式分解成很多对象,这些对象以一定的形式交互的形式分解成很多对象,这些对象以一定的形式交互(通讯、协调和配合)来实现整个系统。(通讯、协调和配合)来实现整个系统。Java程序设计项目化教程(第2版)清华大学出版社面向对象的基本特性面向对象的基本特性 l封装性封装性l继承性继承

14、性l多态性多态性Java程序设计项目化教程(第2版)清华大学出版社封装性封装性 封装性就是把对象的属性和行为结合成一个独立的相同单位,封装性就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有并尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装的特性使得对象以外限的对外接口使之与外部发生联系。封装的特性使得对象以外的部分不能随意存取对象的内部数据(属性),保证了程序和的部分不能随意存取对象的内部数据(属性),保证了程序和数据不受外部干扰且不被误用。数据不受外部干扰且不被误用。面向对象的编程语言主要通过访问控

15、制机制来实现封装,面向对象的编程语言主要通过访问控制机制来实现封装,Java语言中提供了以下语言中提供了以下4种访问控制级别。种访问控制级别。lpublic:对外公开,访问级别最高。对外公开,访问级别最高。lpotected:只对同一个包中的类或子类公开。只对同一个包中的类或子类公开。l默认:只对同一个包中的类公开。默认:只对同一个包中的类公开。lPrivate:不对外公开,只能在对象内部访问,访问级别最低:不对外公开,只能在对象内部访问,访问级别最低 Java程序设计项目化教程(第2版)清华大学出版社继承性继承性继承是一个类获得另一个类的属性和方法的过程。在继承是一个类获得另一个类的属性和方

16、法的过程。在JavaJava语语言中,通常我们具有继承关系的类称为父类(言中,通常我们具有继承关系的类称为父类(superclass,superclass,超类)和子类超类)和子类(subclass)(subclass)。子类可以继承父类的属性和方。子类可以继承父类的属性和方法,同时又可以增加子类的新属性和新方法。法,同时又可以增加子类的新属性和新方法。Java程序设计项目化教程(第2版)清华大学出版社多态性多态性 多态性是指在继承关系中的父类中定义的属性或方法被子类继承之后,可多态性是指在继承关系中的父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个

17、属性或方法以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各子类类中具有不同的含义。在父类及其各子类类中具有不同的含义。例如:哺乳动物有很多叫声,狗和猫是哺乳动物的子类,它们的叫声分别例如:哺乳动物有很多叫声,狗和猫是哺乳动物的子类,它们的叫声分别是是“汪汪汪汪”和和“喵喵喵喵”。Java程序设计项目化教程(第2版)清华大学出版社3.2.2 类类l类的定义类的定义l成员变量成员变量l成员方法成员方法l方法重载方法重载l修饰符修饰符Java程序设计项目化教程(第2版)清华大学出版社定义类定义类定定义一个一个类的步的步骤1、定、定义类名名2、编写写类的属性的属性3、编写写类

18、的方法的方法Java程序设计项目化教程(第2版)清华大学出版社类的定义类的定义类通过关键词类通过关键词class来定义,一般形式为:来定义,一般形式为:类定义修饰符类定义修饰符 class /类体类体 成员变量声明成员变量声明 成员方法成员方法说明:说明:(1)类的定义通过关键字)类的定义通过关键字class来实现,所定义的类名应符合标识符的规来实现,所定义的类名应符合标识符的规定,一般类名的第一个字母大写。定,一般类名的第一个字母大写。(2)类的修饰符用于说明类的性质和访问权限,包括)类的修饰符用于说明类的性质和访问权限,包括public、private、abstract、final。其中其

19、中public表示可以被任何其他代码访问,表示可以被任何其他代码访问,abstract表示抽象类,表示抽象类,final表表示最终类,详细说明见后面章节。类体部分定义了该类所包括的所有成示最终类,详细说明见后面章节。类体部分定义了该类所包括的所有成员变量和成员方法员变量和成员方法Java程序设计项目化教程(第2版)清华大学出版社成员变量成员变量成员变量是类的属性,声明的一般格式为:成员变量是类的属性,声明的一般格式为:变量修饰符变量修饰符 变量修饰符变量修饰符:public、protected、private、和默认(、和默认(frieddlly)。)。成员变量成员变量实例变量实例变量类变量类

20、变量:静态变量静态变量,static进行修饰进行修饰 Java程序设计项目化教程(第2版)清华大学出版社成员方法成员方法 成员方法定义的类的操作和行为,一般形式为:成员方法定义的类的操作和行为,一般形式为:方法修饰符方法修饰符 ()方法体方法体成员方法修饰符主要有成员方法修饰符主要有public、private、protected、final、static、abstract和和synchronized七种,前三种的访问权七种,前三种的访问权限、说明形式和含义与成员变量一致。限、说明形式和含义与成员变量一致。与成员变量类似,成员方法也分为实例方法和类方法。如果与成员变量类似,成员方法也分为实例方

21、法和类方法。如果方法定义中使用了方法定义中使用了static,则该方法为类方法。则该方法为类方法。public static void main(String args)就是一个典型的类方法就是一个典型的类方法Java程序设计项目化教程(第2版)清华大学出版社方法重载方法重载 重载是指同一个类的定义中有多个同名的方法,但是每个重载方法的重载是指同一个类的定义中有多个同名的方法,但是每个重载方法的参数的类型、数量或顺序必须是不同的。每个重载方法可以有不同的参数的类型、数量或顺序必须是不同的。每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。返回类型,但返回类型并不足以区

22、分所使用的是哪个方法。例如:例如:class Area double getArea(float r)return 3.14159*r*r;double getArea(float l,float w)return l*w;Java程序设计项目化教程(第2版)清华大学出版社修饰符修饰符 Java程序设计项目化教程(第2版)清华大学出版社3.2.3 对象对象l对象的创建对象的创建l对象的引用对象的引用 l构造方法构造方法 Java程序设计项目化教程(第2版)清华大学出版社对象对象 类是抽象,而是抽象,而对象是具体(象是具体(实例化)。例化)。对象的象的创建:建:创建建对象的象的过程就是程就是实例

23、化例化类的的过程程创建的步建的步骤:1、对象的声明象的声明2、对象的象的实例化及例化及对象的初始化象的初始化Java程序设计项目化教程(第2版)清华大学出版社对象的创建对象的创建第一步:进行对象的声明。第一步:进行对象的声明。一般形式为:一般形式为:;例如:例如:Animal dog;Animal dog;第二步:实例化对象,通过运算符第二步:实例化对象,通过运算符newnew实现的。实现的。new new 运算符为对象动态分配(即在运行时分配)实际的运算符为对象动态分配(即在运行时分配)实际的内存空间,用来保存对象的数据和代码,并返回对它的的内存空间,用来保存对象的数据和代码,并返回对它的的

24、引用。该引用就是引用。该引用就是newnew分配给对象的内存地址。分配给对象的内存地址。一般形式为:一般形式为:=new =new ;例如:例如:dog=new Animal();dog=new Animal();以上两步也可合并以上两步也可合并:=new =new Java程序设计项目化教程(第2版)清华大学出版社对象的创建对象的创建(举例举例)从图中,我们可以看到对象的声明只是创建变量的引用,从图中,我们可以看到对象的声明只是创建变量的引用,并不分配内存,要分配实际内存空间,必须并不分配内存,要分配实际内存空间,必须new关键字。关键字。Java程序设计项目化教程(第2版)清华大学出版社对

25、象的引用对象的引用 对象创建之后,通过对象创建之后,通过“”运算符用于访问对象中的成员变量和成运算符用于访问对象中的成员变量和成员方法。员方法。一般形式为:一般形式为:由于类变量和类方法不属于某个具体的对象,因此我们也可以直接由于类变量和类方法不属于某个具体的对象,因此我们也可以直接使用类型替代对象名访问类变量或类方法。使用类型替代对象名访问类变量或类方法。例如:例如:Animal.age=3;Animal.eat();Java程序设计项目化教程(第2版)清华大学出版社举例举例3-1 ObjectDemo.java例例3-1 ObjectDemo.javapublic class Object

26、Demo public static void main(String args)Person a=new Person();Person b=new Person();Person c=null;a.name=张三张三;Person.age=18;b.name=李四李四;c=b;System.out.println(a.name+is +Person.age+years old);System.out.println(b.name+is +Person.age+years old);System.out.println(c.name+is +Person.age+years old);a.m

27、ove();Person.eat();Java程序设计项目化教程(第2版)清华大学出版社class Person String name;/实例变量实例变量 static int age;/类变量类变量 void move()/实例方法实例方法 System.out.println(Person move);static void eat()/类方法类方法 System.out.println(Person eat);举例举例3-1 ObjectDemo.java(续)(续)Java程序设计项目化教程(第2版)清华大学出版社举例举例3-1 ObjectDemo.java(续)(续)【程序解析程

28、序解析】类属于数据引用类型,代码第类属于数据引用类型,代码第9 9行是利用对象的引用赋予值,对象行是利用对象的引用赋予值,对象b b和和C C指向同一个堆内指向同一个堆内存,因此两个对象输出的内容是相同的。存,因此两个对象输出的内容是相同的。JavaJava中主要存在四块内存空间:中主要存在四块内存空间:(1 1)栈内存空间:保存所有对象的名称。)栈内存空间:保存所有对象的名称。(2 2)堆内存空间)堆内存空间:保存每个对象的的具体属性内容。保存每个对象的的具体属性内容。(3 3)全局数据区)全局数据区:保存保存staticstatic类型的属性。类型的属性。(4 4)全局代码区:保存所有方法

29、的定义。)全局代码区:保存所有方法的定义。Java程序设计项目化教程(第2版)清华大学出版社构造方法构造方法 构造方法是定义在类中的一种特殊的方法,在创建对象时被系统自动调用,构造方法是定义在类中的一种特殊的方法,在创建对象时被系统自动调用,主要完成对象的初始化,即为对象的成员变量赋初值。对于主要完成对象的初始化,即为对象的成员变量赋初值。对于JavaJava语言中每个语言中每个类,系统将提供缺省的不带任何参数的构造方法。如果程序中没有显示地定类,系统将提供缺省的不带任何参数的构造方法。如果程序中没有显示地定义类的构造方法,则创建对象时系统会调用缺省的构造方法,一旦程序中定义类的构造方法,则创

30、建对象时系统会调用缺省的构造方法,一旦程序中定义了构造方法,系统将不再提供该缺省的构造方法。义了构造方法,系统将不再提供该缺省的构造方法。构造方法具有以下特点:构造方法具有以下特点:(1 1)构造方法名必须和类名完全相同,类中其他成员方法不能和类名相同。)构造方法名必须和类名完全相同,类中其他成员方法不能和类名相同。(2 2)构造方法没有返回值类型,也不能返回)构造方法没有返回值类型,也不能返回voidvoid类型。其修饰符只能是访问类型。其修饰符只能是访问控制修饰符,即控制修饰符,即publicpublic、privateprivate、protectedprotected中的任一个。中的任

31、一个。(3 3)构造方法不能直接通过方法名调用)构造方法不能直接通过方法名调用(显式调用显式调用),必须通过,必须通过newnew运算符在创运算符在创建对象时自动调用。建对象时自动调用。(4 4)一个类可以有任意个构造方法,不同的构造方法根据参数个数的不同或)一个类可以有任意个构造方法,不同的构造方法根据参数个数的不同或参数类型的不同进行区分,称之为构造方法的重载。参数类型的不同进行区分,称之为构造方法的重载。(5 5)构造方法可在类中由用户定义,若用户没有定义,系统将自动生成一个构造方法可在类中由用户定义,若用户没有定义,系统将自动生成一个空构造方法。如空构造方法。如 public Empl

32、oyee();Java程序设计项目化教程(第2版)清华大学出版社举例举例3-2 ConstructorDemo.javaclass Person private String name;private int age;public Person()this.name=张三;this.age=18;public Person(int age)this.age=age;public Person(String name,int age)this.name=name;this.age=age;public int getAge()return age;public void setAge(int a

33、ge)this.age=age;public String getName()return name;public void setName(String name)this.name=name;程序运行结果:张三 is 18 years old张三 is 18 years old王五 is 21 years old public class ConstructorDemo public static void main(String args)Person a=new Person();Person b=new Person();Person c=new Person(王五,21);(a.g

34、etName()+is +a.getAge()+years old);(b.getName()+is +b.getAge()+years old);(c.getName()+is +c.getAge()+years old);Java程序设计项目化教程(第2版)清华大学出版社3.2.4 继承继承l子类的创建子类的创建 l成员变量的隐藏和方法的覆盖成员变量的隐藏和方法的覆盖 l构造方法的继承构造方法的继承 l多态多态 Java程序设计项目化教程(第2版)清华大学出版社子类的创建子类的创建Java中的继承通过中的继承通过extends关键字实现,创建子类一般形式如下:关键字实现,创建子类一般形式如

35、下:class 类名类名 extends 父类名父类名 子类体子类体 子类可以继承父类的所有特性,但其可见性,由父类成员变量、子类可以继承父类的所有特性,但其可见性,由父类成员变量、方法的修饰符决定。对于被方法的修饰符决定。对于被private修饰的类成员变量或方法,其修饰的类成员变量或方法,其子类是不可见的,也即不可访问;对于定义为默认访问(没有修子类是不可见的,也即不可访问;对于定义为默认访问(没有修饰符修饰)的类成员变量或方法,只有与父类同处于一个包中的饰符修饰)的类成员变量或方法,只有与父类同处于一个包中的子类可以访问;对于定义为子类可以访问;对于定义为public或或protecte

36、d 的类成员变量或的类成员变量或方法,所有子类都可以访问。方法,所有子类都可以访问。Java程序设计项目化教程(第2版)清华大学出版社成员变量的隐藏和方法的覆盖成员变量的隐藏和方法的覆盖子类中可以声明与父类同名的成员变量,这时父类的成员变量就被隐藏起子类中可以声明与父类同名的成员变量,这时父类的成员变量就被隐藏起来了,在子类中直接访问到的是子类中定义的成员变量。来了,在子类中直接访问到的是子类中定义的成员变量。子类中也可以声明与父类相同的成员方法,包括返回值类型、方法名、形子类中也可以声明与父类相同的成员方法,包括返回值类型、方法名、形式参数都应保持一致,称为方法的覆盖。式参数都应保持一致,称

37、为方法的覆盖。Java程序设计项目化教程(第2版)清华大学出版社super 的使用的使用如果在子类中需要访问父类中定义的同名成员变量或方法,需要用的关如果在子类中需要访问父类中定义的同名成员变量或方法,需要用的关键字键字supersuper。JavaJava中通过中通过supersuper来实现对被隐藏或被覆盖的父类成员的来实现对被隐藏或被覆盖的父类成员的访问。访问。super super 的使用有三种情况:的使用有三种情况:l访问父类被隐藏的成员变量和成员方法;访问父类被隐藏的成员变量和成员方法;super.super.成员变量名成员变量名;l调用父类中被覆盖的方法,如:调用父类中被覆盖的方

38、法,如:super.super.成员方法名成员方法名(参数列参数列 ););l调用父类的构造方法,如:调用父类的构造方法,如:super(super(参数列表参数列表););super()super()只能在子类的构造方法中出现,并且永远都是位于子类构造方只能在子类的构造方法中出现,并且永远都是位于子类构造方法中的第一条语句。法中的第一条语句。Java程序设计项目化教程(第2版)清华大学出版社例例3-3 InheritDemo.javapackage InheritDemo;class Person private String name;private int age;public int

39、getAge()return age;public void setAge(int age)this.age=age;public String getName()return name;public void setName(String name)this.name=name;public void move()System.out.println(Person move);class Student extends Person private float weight;/子类新增成员子类新增成员 public float getWeight()return weight;public

40、void setWeight(float weight)this.weight=weight;public void move()/覆盖了父类的方法覆盖了父类的方法 move()super.move();/用用super调用父类的方法调用父类的方法 System.out.println(Student Move);public class InheritDemo1 public class InheritDemo1 public static void main(String args)public static void main(String args)Student stu=new St

41、udent();Student stu=new Student();stu.setAge(18);stu.setAge(18);stu.setName(stu.setName(张三张三););stu.setWeight(85);stu.setWeight(85);System.out.println(stu.getName()+is +System.out.println(stu.getName()+is +stu.getAge()+years old);stu.getAge()+years old);System.out.println(weight:+System.out.println(

42、weight:+stu.getWeight();stu.getWeight();stu.move();stu.move();程序运行结果:张三 is 18 years oldweight:85.0Person moveStudent MoveJava程序设计项目化教程(第2版)清华大学出版社 构造方法的继承构造方法的继承 子类对于父类的构造方法的继承遵循以下的原则:子类对于父类的构造方法的继承遵循以下的原则:l子类无条件地继承父类中的无参构造方法。子类无条件地继承父类中的无参构造方法。l若子类的构造方法中没有显示地调用父类的构造方法,则系统默认调用若子类的构造方法中没有显示地调用父类的构造方法

43、,则系统默认调用父类无参构造方法。父类无参构造方法。l若子类构造方法中既没有显示地调用父类的构造方法,且父类中没有无若子类构造方法中既没有显示地调用父类的构造方法,且父类中没有无参构造方法的定义,则编译出错。参构造方法的定义,则编译出错。l对于父类的有参构造方法,子类可以在自己的构造方法中使用对于父类的有参构造方法,子类可以在自己的构造方法中使用super关关键字来调用它,但必须位于子类构造方法的第一条语句。子类可以使用键字来调用它,但必须位于子类构造方法的第一条语句。子类可以使用this(参数列表参数列表)调用当前子类中的其他构造方法。调用当前子类中的其他构造方法。Java程序设计项目化教程

44、(第2版)清华大学出版社例例3-4 InheritDemo2.java1.class SuperClass 2.SuperClass()3.System.out.println(调用父类无参构造方调用父类无参构造方法法);4.5.SuperClass(int n)6.System.out.println(调用父类有参构造方调用父类有参构造方法:法:+n);7.8.9.class SubClass extends SuperClass10.SubClass(int n)11.System.out.println(调用子类有参构造方调用子类有参构造方法:法:+n);12.13.SubClass()

45、14.super(200);15.System.out.println(调用子类无参构造方调用子类无参构造方法法);16.17.18.public class InheritDemo219.public static void main(String arg)20.SubClass s1=new SubClass();21.SubClass s2=new SubClass(100);22.23.程序运行结果:程序运行结果:调用父类有参构造方法:调用父类有参构造方法:200调用子类无参构造方法调用子类无参构造方法调用父类无参构造方法调用父类无参构造方法调用子类有参构造方法:调用子类有参构造方法:

46、100Java程序设计项目化教程(第2版)清华大学出版社多态多态多态的实现必须具备三个条件:多态的实现必须具备三个条件:l必须存在继承。必须存在继承。l必须有方法的覆盖。必须有方法的覆盖。l必须存在父类对象的引用指向子类的对象。必须存在父类对象的引用指向子类的对象。当使用父类对象的引用指向子类的对象,当使用父类对象的引用指向子类的对象,Java的多态机制的多态机制根据引用的对象类型来选择要调用的方法,由于父类对象根据引用的对象类型来选择要调用的方法,由于父类对象引用变量可以引用其所有的子类对象,因此引用变量可以引用其所有的子类对象,因此Java虚拟机直虚拟机直到运行时才知道引用对象的类型,所要

47、执行的方法需要在到运行时才知道引用对象的类型,所要执行的方法需要在运行时候才确定,而无法在编译时候确定。运行时候才确定,而无法在编译时候确定。Java程序设计项目化教程(第2版)清华大学出版社例例3-5 向上转型向上转型 UpcastDemo.javaclass A void aMthod()System.out.println(Superclass-aMthod);class B extends A public void aMthod()System.out.println(Childrenclass-aMthod);/覆盖父类方法覆盖父类方法void bMethod()System.ou

48、t.println(Childrenclass-bmethod);/B类定义了自己的新方法类定义了自己的新方法public class UpcastDemo public class UpcastDemo public static void main(String args)public static void main(String args)A a=new B();/A a=new B();/向上转型向上转型 a.aMthod();a.aMthod();Java程序设计项目化教程(第2版)清华大学出版社例例3-6 向下转型向下转型 DowncastDemo.javaclass A voi

49、d aMthod()System.out.println(A method);class B extends A void bMethod1()System.out.println(B method 1);void bMethod2()System.out.println(B method 2);public class DowncastDemo public class DowncastDemo public static void main(String args)public static void main(String args)A a1=new B();/A a1=new B();

50、/向上转型向上转型 a1.aMthod();/a1.aMthod();/调用父类调用父类aMthod()aMthod(),a1a1遗失遗失B B类类方法方法bMethod1()bMethod1()、bMethod2()bMethod2()B b1=(B)a1;/B b1=(B)a1;/向下转型,编译无错误,运向下转型,编译无错误,运行时无错误行时无错误 b1.aMthod();/b1.aMthod();/调用父类方法调用父类方法 b1.bMethod1();/b1.bMethod1();/调用子类方法调用子类方法 b1.bMethod2();/b1.bMethod2();/调用子类方法调用子类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁