版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三:类的继承及多态一、实验目的1掌握类的继承方法及上转型对象的方法调用。2掌握this和super的区别及使用。3理解抽象类的概念及作用,掌握接口的声明,实现及接口回调。二、实验编程内容1.设计一个抽象类,声明有关算术运算的方法,并创建四个子类继承该抽象的类,完成进行加、减、乘、除四则运算。2.编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义Gymnastics类和School类,它们都是ComputerAverage的子类,Gymnastics类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分。School中
2、计算平均分的方法是直接是总分除以总科目。要求:定义ComputerAverage的对象为上转型对象,并调用重写的方法averge。3.编写一个类,该类有如下一个方法:public int f(int a,int b)/要求该方法将返回a和b的最大公约数,再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个正整数的最小公倍数。要求:在重写的方法的方法体中需要调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b/m)返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。4编写一个圆锥类,能够计算圆锥的体积,要求圆锥类
3、的构造函数中有一参数是圆类的一个对象。5 定义接口Shape,其中包括Area方法。类Circle、Square和Triangle均实现了接口Shape。定义主函数,创建元素个数为3的Shape类型的一维数组,分别为数组元素创建Circle、Square和Triangle类型的对象,最后分别调用各数组元素的Area方法,输出相关信息。6定义一个接口,用于查询课程定义一个类 Student,包括如下属性:学号(ID)、姓名(name)、性别(Sex)、出生日期(birthDate)、专业(specialty)、课程(course),实现以下方法:每个属性的获取和定义,要求至少包含一个构造方法。定
4、义一个接口类,定义方法query_course_catalog()用来查询课程。编写一个接口,定义相关选课操作,定义Student 实现该接口。三、实验运行内容1类的继承性(1)在某个路径下创建一个文件,定义一个Person类,一个Student类,通过子类扩展父类的功能。【源代码】class Personprivate String name;private int age;public void setName(String name)=name;public String getName()return name;class Student extends Person
5、private String school;public void setSchool(String school)this.school=school;public String getSchool()return school;public class ExtendsDemopublic static void main(String args)Student stu=new Student();stu.setName(张三);stu.setSchool(清华大学); System.out.println(姓名:+stu.getName()+,学校:+stu.getSchool();编译并
6、运行该程序,观察运行的结果,参照下图。将姓名和年龄及学校改为自己的,观察运行结果。2. this和super的区别(1)在某个路径下创建一个文件,体会this和super的区别。【源代码】class Personpublic String name=张三;class Student extends Personpublic String name=张童;public void print()System.out.println(父类中属性: +);System.out.println(子类中属性: +);public class ThisSuperDemo
7、public static void main(String args)Student stu=new Student();stu.print();(2)编译并运行该程序,观察运行的结果,参照下图。3. 抽象类在某个路径下创建一个文件,体会重写抽象类中的抽象方法。【源代码】abstract class Personprivate String name ; / 定义name属性 public Person(String name) = name ;public void setName(String name) = name ;public String g
8、etName()return ;public abstract String getInfo() ; / 抽象方法class Student extends Personprivate String school ;public Student(String name,String school)super(name) ; / 指定要调用抽象类中的构造方法this.school = school ;public void setSchool(String school)this.school = school ;public String getSchool()return
9、 this.school ;public String getInfo()return姓名: + super.getName() +;学校: + this.getSchool() ;public class AbstractDemopublic static void main(String args)Student stu = new Student(张三,理工大学) ;System.out.println(stu.getInfo() ;编译并运行该程序,观察运行的结果,参照下图。4.接口的定义和实现在某个路径下创建一个文件。定义两个接口A和B,定义一个X类,并继承A和B两个接口,编写应用程
10、序使用X类。【源代码】interface Apublic static final String NAME=张三; /定义全局常量public void printA1(); /定义抽象方法public void printA2(); /定义抽象方法interface Bpublic void printB(); /定义抽象方法class X implements A,Bpublic void printA1()System.out.println(Hello World!);public void printA2()System.out.println(Hello China!);publi
11、c void printB()System.out.println(Hello +NAME);public class InterfaceDemopublic static void main(String args)X x=new X();x.printA1();x.printA2();x.printB();编译并运行该程序,观察运行的结果,参照下图。5. 抽象类和接口在某个路径下创建一个文件。完成子类同时继承抽象类和实现接口。【源代码】interface Apublic static final String NAME=张三; /定义全局常量public void printA1(); /
12、定义抽象方法public void printA2(); /定义抽象方法abstract class Bpublic abstract void printB(); class X extends B implements Apublic void printA1()System.out.println(Hello World!);public void printA2()System.out.println(Hello China!);public void printB()System.out.println(Hello +NAME);public class InterfaceExten
13、dsDemopublic static void main(String args)X x=new X();x.printA1();x.printA2();x.printB();编译并运行该程序,观察运行的结果,参照下图。4编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。 class Father /本类中的speak方法重载了两次 void speak( ) /无参数的speak方法 System.out.println(I am Father! ); void speak(String s) /有参数的speak方法 System.out.printl
14、n(I like+s+. ); public class OverLoadingDemo public static void main (String args ) Father x = new Father( ); x.speak(); /调用无参的speak方法 x.speak(music) /调用有参的speak方法 四、思考题1一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?如果方法中的参数的名字和成员变量的名字相同,可以用哪个关键字加以区分。 2同名的不同方法共存的情况称为什么?如何区分这些同名方法?3试说出类方法和实例方法的不同。4.一个方法或一个块内定义的变量是否可以在方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年能源建设区块链应用开发合同
- 2026年环保开发工业互联网合同
- 2026年医疗咨询工程施工协议
- 2026年AI评估托管运营合同
- 生物一模模拟卷01-2026年中考第一次模拟考试(含答案)(江西专用)
- 村委财务管理工作制度
- 村心里咨询室工作制度
- 预防手足口病工作制度
- 领导包联重点工作制度
- 风险排查管控工作制度
- 2025年wset三级题库及答案
- 2025年高考物理电磁学专题训练解题技巧与真题试卷及答案
- 2026春教科版(新教材)小学科学三年级下册《发光发热的太阳》教学课件
- GB/T 31458-2026医院安全防范要求
- 雨课堂学堂在线学堂云《柴油机构造与使用(火箭军工程)》单元测试考核答案
- 乡镇卫生院医保审核制度
- 统编版(2024)八年级下册历史期末复习全册知识点提纲详细版
- BMS培训课件教学课件
- 物业新入职员工安全培训课件
- 休克课稿教案
- 《DLT 5428-2023火力发电厂热工保护系统设计规程》专题研究报告深度
评论
0/150
提交评论