实验项目2 Java面向对象程序设计
第2部分 继承与接口
[实验目的]
1、掌握java 继承中父类及其子类的定义方法。 2、掌握子类重写父类同名方法的方法。 3、掌握接口的用法。
[实验要求]
1、 复习理论教学中所学的内容。
2、 认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。 3、 认真总结实验并书写实验报告。
[实验课时] 2学时
[实验教学方式] 学生上机实验,教师随堂指导。 [实验内容]
1、定义父类People,分别定义People类的子类ChinaPeople,AmericanPeople和BeijingPeople并分别重写父类中的各个方法。最后在主方法中分别创建各子类的对象并调用各自的方法打印输出信息。该程序的模板代码如下:请将其补充完整并调试运行。
class People {
protected double weight,height; public void speakHello() {
System.out.println(\ }
public void averageHeight() {
height=173;
System.out.println(\ }
public void averageWeight() {
weight=70;
System.out.println(\ } }
class ChinaPeople extends People {
【代码1】 //重写public void speakHello()方法,要求输出类似“你好,吃了吗”这样的
//汉语信息
【代码2】 //重写public void averageHeight()方法,要求输出类似 //“中国人的平均身高:168.78厘米”这样的汉语信息 【代码3】 //重写public void averageWeight()方法,
//要求输出类似“中国人的平均体重:65公斤”这样的汉语信息 public void chinaGongfu() {
【代码4】//输出中国武术的信息,例如:\坐如钟,站如松,睡如弓\等 } }
class AmericanPeople extends People {
【代码5】 //重写public void speakHello()方法,要求输出类似 //“How do you do”这样的英语信息。 【代码6】 //重写public void averageHeight()方法 【代码7】 //重写public void averageWeight()方法 public void americanBoxing() {
【代码8】//输出拳击的信息,例如,“直拳”、“钩拳”等 } }
class BeijingPeople extends ChinaPeople {
【代码9】 //重写public void speakHello()方法,要求输出类似“您好”这样的汉语信息
【代码10】 //重写public void averageHeight()方法
【代码11】 //重写public void averageWeight()方法 public void beijingOpera() {
【代码12】//输出京剧的信息 } }
public class Example {
public static void main(String args[]) {
ChinaPeople chinaPeople=new ChinaPeople();
AmericanPeople americanPeople=new AmericanPeople(); BeijingPeople beijingPeople=new BeijingPeople(); chinaPeople.speakHello(); americanPeople.speakHello(); beijingPeople.speakHello(); chinaPeople.averageHeight(); americanPeople.averageHeight(); beijingPeople.averageHeight();
chinaPeople.averageWeight(); americanPeople.averageWeight(); beijingPeople.averageWeight(); chinaPeople.chinaGongfu(); americanPeople.americanBoxing(); beijingPeople.beijingOpera() ; beijingPeople.chinaGongfu(); } }
2、读懂下面模板代码,按要求补充程序并调试运行。掌握抽象类的定义及其实现方法,学习上转型对象的运用方法。
abstract class Employee {
public abstract double earnings(); }
class YearWorker extends Employee {
【代码1】 //重写earnings()方法 }
class MonthWorker extends Employee {
【代码2】 //重写earnings()方法。 }
class WeekWorker extends Employee {
【代码3】 //重写earnings()方法。 }
class Company {
Employee[] employee; double salaries=0;
Company(Employee[] employee) {
this.employee=employee; }
public double salariesPay() {
salaries=0;
【代码4】 //计算salaries。 return salaries; } }
public class HardWork {