实验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、实施理论课授课)、自我介绍。
3、Henu教师类,请根据两种教师总结出教师类的属性和方法。
利用继承机制,对部分方法进行重写。
最后编写测试类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=100,y=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