Java-实验10 继承、组合 和重写

实验10 继承、组合 和重写

一、实验目的

1. 掌握继承的概念,并能实现继承。

2. 掌握继承和组合的区别。

3. 掌握对父类成员的重写。

二、实验内容

1. 请编码实现动物世界的继承关系:
1)动物(Animal)具有行为:吃(eat)、睡觉(sleep)。
2)动物包括:兔子(Rabbit),老虎(Tiger)。
3)这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest进行测试 

package itcost.cn;

public class AnimalTest {
     public static void main(String[] args) {
      Rabbit r=new Rabbit("兔子","吃萝卜"); 
      r.getInfo();
      Tiger t=new Tiger("老虎","吃肉");
      t.getInfo();
     }
}
class Animal{
	String name;
	String eat;
	static String sleep="睡觉";
	Animal(String n,String e){
		name=n;
		eat=e;
	}
	void getInfo() {
		System.out.print("我是只可爱的"+name);
		System.out.println(",我喜欢"+eat+"和"+sleep+"。");
	}
}
class Rabbit extends Animal{
	Rabbit(String n,String e){
		super(n,e);
	}
}
class Tiger extends Animal{
	Tiger(String n,String e){
		super(n,e);
	}
}

2. 开发Henu教师类,其中教师分为java教师以及.NET教师,各自的要求如下:


1.Java教师
具有属性:姓名、所在专业。
具有方法:授课(授课的步骤依次是:打开Eclipse、实施理论课授课)、自我介绍。
2.NET教师
具有属性:姓名、所在专业。
具有方法:授课(授课的步骤依次是:打开Visual Studio 2010、实施理论课授课)、自我介绍。

3Henu教师类,请根据两种教师总结出教师类的属性和方法。

利用继承机制,对部分方法进行重写。

最后编写测试类TeacherTest对三个类进行测试。

 

package itcost.cn;

public class TeacherTest {
   public static void main(String[] args) {
	   JavaTeacher j= new JavaTeacher("利华","软件工程");
	   j.process();
	   NETTeacher t= new NETTeacher("刘佳","计算机科学与技术");
	   t.process();
   }
}
class HenuTeacher{
	String name;
	String profession;
	HenuTeacher(String n,String p){
		name=n;
		profession=p;
	}
	void process(){
	   System.out.println("授课的步骤依次是:");
	}
	void intro() {
		System.out.println("大家好,我的名字是"+name+"所在专业:"+profession);
	}
}
class JavaTeacher extends HenuTeacher{
	JavaTeacher(String n,String p){
		super(n,p);//对父类的构造方法进行设置
	}
	void process() {//方法重写
		intro();
		System.out.println("授课的步骤依次是:打开Eclipse、实施理论课授课");
	}
}
class NETTeacher extends HenuTeacher{
	NETTeacher(String n,String p){
		super(n,p);
	}
	void process() {
		intro();
		System.out.println("授课的步骤依次是:打开Visual Studio 2010、实施理论课授课");
	}
}

3. 该程序具有继承、成员的覆盖与隐藏概念。请运行该程序然后分析。 

class Father

{ int x=10,y=20;

 void speak()

 { System.out.println("I am Father:"+"x="+x+":y="+y); } //x=10,y=20;

 void calculate(String s)

 

 { System.out.println(s+"x*y="+x+"*"+y+"="+x*y); }

class Son extends Father

{ int x=30;

 

 void speak()

 

 {System.out.println("I am Son:"+"x="+x+":y="+y); //X=30,Y=20

 }

 void this_super()

 { super.x=100; //修改父类中的x,y 

 super.y=200;

super.speak(); //x=100,y=200

this.speak(); //x=100y=200

calculate("在子类中直接调用");//验证父类中的值已被修改 

 x=200;//this.x=200;

 y=300;//this.y=300;向父类追踪,相当super.y

 }

}

4.下面有几个类,请问他们之间应该哪些用继承,哪些用组合?

class Computer{ }

class PC{ }//Personal Computer

class Monitor{ }//显示器

class MainBoard{ }//主板

class PC extends Computer{}//继承;

Class PC{//组合

Class Monitor{}

Class MainBoard{}

}

 

clclaLclcalcl

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1.定义一个人的类(属性有名字,年龄,性别。写一个能输出各个属性值的方法showInfo()),定义一个学生类(属性有学号),学生继承人类,要求: (1)父类的属性赋值用构造方法来实现(分别用有参数构造方法和无参数构造方法实现); (2)子类的属性也用构造方法来赋值; (3)在子类中重写父类的showInfo()方法 (4)声明学生类的对象,调用学生的显示信息的方法。 2、请编码实现动物世界的继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep)、移动(move) 动物包括:兔子(Rabbit),老虎(Tiger),鹰(eagle) 这些动物吃、移动的行为各不相同(eat,move动作不同);但睡觉的行为是一致的。 3、(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的,成员变量x和y,获取和设置x和y值的public方法。 (2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。 (3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。 (4)建立Cylinder对象,输出其轴心位置坐标、半径、面积、高及其体积的值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值