Java实验7 继承与接口

实验7  继承与接口

【实验目的】

  • 子类的继承性

  • 子类对象的创建过程

  • 成员变量的继承与隐藏

  • 方法的继承与隐藏

  • 掌握面向接口编程思想

【实验要求】

       1、编写程序模拟中国人、美国人是人,北京人是中国人。除主类外,程序中还有4个类:PeopleChinesePeopleAmericanPeopleBeijingPeople类。要求如下:

       (1)People类有权限是protecteddouble型成员变量heightweight,以及public void speakHello( )public void averageHeight( )public void averageWeight( )方法。

       (2)ChinaPeople类是People的子类,新增了public void chinaGongFu( )方法。要求ChinaPeople重写父类的public void speakHello( )public void averageHeight( )public void averageWeight( )方法。

       (3)AmericanPeople类是People的子类,新增public void americanBoxing( )方法。要求AmericanPeople重写父类的public void speakHello( )public void averageHeight( )public void averageWeight( )方法。

       (4)BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera( )方法。要求ChinaPeople重写父类的public void speakHello( )public void averageHeight( )public void averageWeight( )方法。

2、小狗在不同环境条件下可能呈现不同的状态表现,要求用接口封装小狗的状态。具体要求如下:

       (1)编写一个接口DogState,该接口有一个名字为void showState( )的方法。

       (2)编写Dog类,该类中有一个DogState接口声明的变量state。另外,该类有一个show( )方法,在该方法中让接口state回调showState( )方法。

       (3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。

       (4)编写主类,在主类中测试小狗的各种状态。

【效果示例】

       示例1

     

       示例2

             

【程序模板】

实验7.1 中国人、北京人和美国人。   People.java代码如下:

public class People {

   protected double weight,height;

   public void speakHello() {

      System.out.println("yayayaya");

   } 

   public void averageHeight() {

       height=173;

       System.out.println("average height:"+height);

   }

   public void averageWeight() {

      weight=70;

      System.out.println("average weight:"+weight);

   }

}

ChinaPeople.java代码如下:

public class ChinaPeople extends People {

     public void speakHello() {  

        System.out.println("您好");

     }   

     public void averageHeight() {

        height = 168.78; 

        System.out.println("中国人的平均身高:"+height+" 厘米");  

     }

//重写public void averageWeight()方法,输出:"中国人的平均体重:65公斤"

【代码段1

     public void chinaGongfu() {

        System.out.println("坐如钟,站如松,睡如弓");

     }

}

AmericanPeople.java代码如下:

public class AmericanPeople extends People {

   //重写public void speakHello()方法,输出"How do you do"

       【代码段2

   //重写public void averageHeight()方法,输出"American's average height:176 cm"

    【代码段3

     public void averageWeight() {

        weight = 75; 

        System.out.println("American's average weight:"+weight+" kg");  

     }

     public void americanBoxing() {

        System.out.println("直拳、钩拳、组合拳");

     }

}

BeijingPeople.java代码如下:

public class BeijingPeople extends ChinaPeople {

//重写public void averageHeight()方法,输出:"北京人的平均身高: 172.5厘米"

【代码段4

   //重写public void averageWeight()方法,输出:"北京人的平均体重:70公斤"

【代码段5

   public void beijingOpera() {

       System.out.println("花脸、青衣、花旦和老生");

   }

}

Example.java代码如下:

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();

   } 

}

实验7.2 小狗的状态。   CheckDogState.java代码如下:

interface DogState {

    public void showState();

}

class SoftlyState implements DogState {

    public void showState() {

       System.out.println("听主人的命令");

    }

}

class MeetEnemyState implements DogState {

【代码段6 //public void showState()

class MeetFriendState implements DogState {

【代码段7 //重写public void showState()方法

}

class MeetAnotherDog implements DogState {

【代码段8 //重写public void showState()方法

}

class Dog {

   DogState  state;

   public void show() {

      state.showState();

   }

   public void setState(DogState s) {

      state = s;

   }

}

public class CheckDogState {

   public static void main(String args[]) {

      Dog yellowDog =new Dog();

      System.out.print("狗在主人面前:");

      yellowDog.setState(new SoftlyState());

      yellowDog.show();

      System.out.print("狗遇到敌人:");

      yellowDog.setState(new MeetEnemyState());

      yellowDog.show();

      System.out.print("狗遇到朋友:");

      yellowDog.setState(new MeetFriendState());

      yellowDog.show();

      System.out.print("狗遇到同伴:");

      yellowDog.setState(new MeetAnotherDog());

      yellowDog.show();

   }

}

【实验答案】

【代码段1】: 

【代码段2】: 

【代码段3】: 

【代码段4】: 

【代码段5】: 

【代码段6】:

【代码段7】:

【代码段8】:

 

posted @ 2020-02-22 19:29  imanuu  阅读(90)  评论(0)    收藏  举报