JAVA子类与继承 实验实列

实验1 中国人与美国人

        继承相关知识:由继承得到的类称为子类被继承的类称为父类(超类)Java不支持多重继承,即子类只能有一个父类。人们习惯地称子类与父类的关系是is-a关系。

        如果子类和父类在同一个包中,那么子类自然地继承了父类中不是private的成员变量作为子类的成员变量,并且也自然地继承了父类中不是private的方法作为子类的方法。继承的成员变量或方法的访问权限保持不变。子类和父类不在同一个包中时,父类中的 private和友好访问权限的成员变量不会被子类继承。也就是说,子类只继承父类中的 protected和public访问权限的成员变量作为子类的成员变量;同样,子米只继承父米中的 protected和public访问权限的方法作为子类的方法。

        子类声明的成员变量的名字和从父类继承来的成员变量的名字相同时,将隐藏所继承的成员变量。方法重写是指:子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。子类如此定义的方法称为子类重写的方法。

        子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。重写方法既可以操作继承的成员变量调用继承的方法,也可以操作子类新声明的成品容量。调用新定义的其他方法。但无法操作被子类隐藏的成员变量和方法。

实验要求

编写程序模拟中国人、美国人及北京人。除主类外,程序中有4个类:People、 ChinaPeople、 AmericanPeople和BeijingPeople。要求如下:

(1)People类有权限是protected的double型成员变量height和weight,以及 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( )方法。


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

   }  

}   

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

   }

}

public class ChinaPeople extends People {

     public void speakHello() {    
        System.out.println("您好");
     }    

     public void averageHeight() {
        height = 168.78;  
        System.out.println("中国人的平均身高:"+height+" 厘米");   
     }

     public void averageWeight() {
    	 weight=65; 
         System.out.println("中国人的平均体重:"+weight+"公斤");
	}//重写public void averageWeight()方法,输出:"中国人的平均体重:65公斤"

     public void chinaGongfu() {
        System.out.println("坐如钟,站如松,睡如弓");
     }

}

public class BeijingPeople extends ChinaPeople {
	public void averageHeight() {
        height = 172.5;  
        System.out.println("北京人的平均身高:"+height+"厘米");   
     } //重写public void averageHeight()方法, 输出:"北京人的平均身高:172.5厘米"

	public void averageWeight() {
   	 	weight=70; 
   	 	System.out.println("北京人的平均体重:"+weight+"公斤");
	} //重写public void averageWeight()方法,输出:"北京人的平均体重:70公斤"

   public void beijingOpera() { 
       System.out.println("花脸、青衣、花旦和老生");
   }
}

public class AmericanPeople extends People {

	public void speakHello() {
    	System.out.println("How do you do");
    }//重写public void speakHello()方法,输出"How do you do"

    public void averageHeight() {
		height = 176;
		System.out.println("American's average height:"+height+" cm");
	}//重写public void averageHeight()方法,输出"American's average height:176 cm"

    public void averageWeight() { 
        weight = 75;  
        System.out.println("American's average weight:"+weight+" kg");   
     }

    public void americanBoxing() {
        System.out.println("直拳、钩拳、组合拳");
     }
}



   

 

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kun.A.A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值