实验二 继承与接口实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二继承与接口
一、实验目的
1.掌握类的继承机制。
2.熟悉类中成员变量和方法的访问控制。
3.掌握接口与包的使用,熟悉方法的多态性。
二、实验内容
1.定义父类及子类,在子类中重写父类的方法
2.练习接口与包的使用
三、.实验步骤与要求
第1题继承
编写一个Java应用程序,除了主类外,该程序中还有4个类:People, ChinaPeople, AmericanPeople 和BeijingPeople类。此四个类的继承关系如下图所示:
要求ChinaPeople,American类均重写其父类People类的speakHello, averageHeight, averageWeight方法,BeijingPeople类重写其父类ChinaPeople类的speakHello, averageHeight, averageWeight方法。
源代码:
package people;
class people
{
protected double height ;
protected double weight ;
public void speakHello() //问候语的函数
{
System.out.println("hello");
}
public void averageHeight()//人们的平均身高{
height=170;
System.out.println(+height);
}
public void averageWeight()//人们的平均体重{ weight=120;
System.out.println(+weight);
}
}
class Chinapeople extends people
{
public void speakHello()
{
System.out.println("你好");
}
public void averageHeight()
{
height=172;
System.out.println(+height);
}
public void averageWeight()
{ weight=115;
System.out.println(+weight);
}
public void chinaGongfu()//中国功夫的方法
{
System.out.println("中国功夫");
}
}
class Americanpeople extends people
{
public void speakHello()
{
System.out.println("hello");
}
public void averageHeight()
{
height=180;
System.out.println(+height);
}
public void averageWeight()
{ weight=150;
System.out.println(+weight);
}
public void americanBoxing()//美国拳击的方法{
System.out.println("americanBoxing");
}
}
class Beijingpeople extends Chinapeople
{
public void speakHello()
{
System.out.println("北京欢迎你");
}
public void averageHeight()
{
height=168;
System.out.println(+height);
}
public void averageWeight()
{ weight=125;
System.out.println(+weight);
}
}
class Example{
public static void main(String []args)
{
people p =new people();
Chinapeople c=new Chinapeople(); Americanpeople a=new Americanpeople(); Beijingpeople b=new Beijingpeople();
p.averageHeight();
p.averageWeight();
p.speakHello();
c.averageHeight();
c.averageWeight();
c.chinaGongfu();
c.speakHello();
a.averageHeight();
a.averageWeight();
a.americanBoxing();
a.speakHello();
b.averageHeight();
b.averageWeight();
b.speakHello();
}
}
结果截图:
第2题上转型对象
要求有一个abstract类,类名为Employee。Employee的子类有YearWorker,MonthWorker和WeekWorker。YearWorker按年领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。Employee类有一个abstract方法:public abstract earnings();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。
有一个Company类,该类用employee数组作为成员,employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。
源代码:
package people;
abstract class Employee