实验二 继承与接口实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档