3 实验三 类的继承及多态

上传人:第*** 文档编号:34242067 上传时间:2018-02-22 格式:DOC 页数:7 大小:75KB
返回 下载 相关 举报
3 实验三 类的继承及多态_第1页
第1页 / 共7页
3 实验三 类的继承及多态_第2页
第2页 / 共7页
3 实验三 类的继承及多态_第3页
第3页 / 共7页
3 实验三 类的继承及多态_第4页
第4页 / 共7页
3 实验三 类的继承及多态_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《3 实验三 类的继承及多态》由会员分享,可在线阅读,更多相关《3 实验三 类的继承及多态(7页珍藏版)》请在金锄头文库上搜索。

1、实验三:类的继承及多态一、实验目的1掌握类的继承方法及上转型对象的方法调用。2掌握 this 和 super 的区别及使用。3理解抽象类的概念及作用,掌握接口的声明,实现及接口回调。 。二、实验编程内容1.设计一个抽象类,声明有关算术运算的方法,并创建四个子类继承该抽象的类,完成进行加、减、乘、除四则运算。2.编写一个 ComputerAverage 抽象类,类中有一个抽象方法求平均分 average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类,Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高

2、分,然后求平均分。School 中计算平均分的方法是直接是总分除以总科目。要求:定义 ComputerAverage 的对象为上转型对象,并调用重写的方法averge。3.编写一个类,该类有如下一个方法:public int f(int a,int b)/要求该方法将返回 a 和 b 的最大公约数,再编写一个该类的子类,要求子类重写方法 f(),而且重写的方法将返回两个正整数的最小公倍数。要求:在重写的方法的方法体中需要调用被隐藏的方法返回 a 和 b 的最大公约数 m,然后将(a*b/m)返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法 f()计算两个正整数的最大公约数和

3、最小公倍数。4 编写一个圆锥类,能够计算圆锥的体积,要求圆锥类的构造函数中有一参数是圆类的一个对象。5 定义接口 Shape,其中包括 Area 方法。类 Circle、Square 和 Triangle 均实现了接口 Shape。定义主函数,创建元素个数为 3 的 Shape 类型的一维数组,分别为数组元素创建 Circle、Square 和 Triangle 类型的对象,最后分别调用各数组元素的 Area 方法,输出相关信息。6 定义一个接口,用于查询课程定义一个类 Student,包括如下属性:学号(ID) 、姓名( name) 、性别(Sex) 、出生日期(birthDate) 、专业

4、( specialty) 、课程(course) ,实现以下方法:每个属性的获取和定义,要求至少包含一个构造方法。定义一个接口类,定义方法query_course_catalog()用来查询课程。编写一个接口,定义相关选课操作,定义Student 实现该接口。三、实验运行内容1类的继承性(1)在某个路径下创建一个文件,定义一个 Person 类,一个 Student 类,通过子类扩展父类的功能。【源代码】class Personprivate String name;private int age;public void setName(String name)this.name=name;p

5、ublic String getName()return name;class Student extends Personprivate 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(清华大学);

6、System.out.println(姓名:+stu.getName()+,学校:+stu.getSchool();编译并运行该程序,观察运行的结果,参照下图。将姓名和年龄及学校改为自己的,观察运行结果。2. this 和 super 的区别(1)在某个路径下创建一个文件,体会 this 和 super 的区别。【源代码】class Personpublic String name=张三;class Student extends Personpublic String name=张童;public void print()System.out.println(父类中属性: +super.na

7、me);System.out.println(子类中属性: +this.name);public class ThisSuperDemopublic static void main(String args)Student stu=new Student();stu.print();(2)编译并运行该程序,观察运行的结果,参照下图。3. 抽象类在某个路径下创建一个文件,体会重写抽象类中的抽象方法。【源代码】abstract class Personprivate String name ; / 定义 name 属性 public Person(String name)this.name = n

8、ame ;public void setName(String name)this.name = name ;public String getName()return this.name ;public abstract String getInfo() ; / 抽象方法class Student extends Personprivate String school ;public Student(String name,String school)super(name) ; / 指定要调用抽象类中的构造方法this.school = school ;public void setScho

9、ol(String school)this.school = school ;public String getSchool()return 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() ;编译并运行该

10、程序,观察运行的结果,参照下图。4.接口的定义和实现在某个路径下创建一个文件。定义两个接口 A 和 B,定义一个 X 类,并继承 A 和B 两个接口,编写应用程序使用 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

11、.println(Hello World!);public void printA2()System.out.println(Hello China!);public 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. 抽象类和接口在某个路径下创建一个文件。完成子类同时继承抽象类和实现接口。【

12、源代码】interface Apublic static final String NAME=张三; /定义全局常量public void printA1(); /定义抽象方法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

13、!);public void printB()System.out.println(Hello +NAME);public class InterfaceExtendsDemopublic static void main(String args)X x=new X();x.printA1();x.printA2();x.printB();编译并运行该程序,观察运行的结果,参照下图。4编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。 class Father /本类中的 speak 方法重载了两次void speak( ) /无参数的 speak 方法Sy

14、stem.out.println(I am Father! );void speak(String s) /有参数的 speak 方法 System.out.println(I like+s+. ); public class OverLoadingDemopublic static void main (String args )Father x = new Father( );x.speak(); /调用无参的 speak 方法x.speak(music) /调用有参的 speak 方法 四、思考题1一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?如果方法中的参数的名字和成员变量的名字相同,可以用哪个关键字加以区分。 2同名的不同方法共存的情况称为什么?如何区分这些同名方法?3试说出类方法和实例方法的不同。4.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?5.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?6.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?7.同名的不同方法共存的情况称为什么?如何区分这些同名方法?8. 定义一个类实现银行帐户的概念,包括的变量有“帐号”和“存款余额” ,包括的方法有“存款” 、 “取款”和“查询余额”

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号