日期:2014-05-20  浏览次数:20754 次

关于类的继承,重写的问题,求教!!!
创建一个Animal(动物类),
让Horse(马),Dog(狗),Cat(猫)等动物继承Animal类。
在Animal类中定义SetName(   )方法(用来设置动物名)、
SetDate()方法(用来设置动物的出生日期)和show()方法
(用来输出动物名和出生日期),让其子类重写这些方法。

class   animal{
  String   Name;
  int   year,month,day;
  public   void   SetName(String   n){
  this.Name=n;
  }
  public   void   SetData(int   year,int   month,int   day){
        this.year=year;
  this.month=month;
  this.day=day;
  }
public   void   SetShow(){
        System.out.println( "Name= "+Name);
        System.out.println( "brithday= "+year+ ". "+month+ ". "+day);
  }
}
class   Horse   extends   animal{
    public   static   void   main(String   args[]){
   
   
    animal   aa=new   animal();
    aa.SetName( "xx ");
    aa.SetData(1996,5,1);
    aa.SetShow();
  }
}

做到这步.但重写就不会了..求代码


------解决方案--------------------
只要在子类中写与父类方法一样的返回类型,一样的参数个数,以及参数类型,那么子类就覆盖了父类方法,若要引用父类方法可用super.method_name(参数列表),我就把你的代码随便改了一下,就很容易看出这点,如下:
class animal{
String Name;
int year,month,day;
public void SetName(String n){
this.Name=n;
}
public void SetData(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
}
public void SetShow(){
System.out.println( "Name= "+Name);
System.out.println( "brithday= "+year+ ". "+month+ ". "+day);
}
}
class Horse extends animal{
String Name;
public void SetName(String n){
super.SetName(n);
this.Name=n + "sub ";
}
public void SetShow(){
super.SetShow();
System.out.println( "The Name in subclass is " + Name);
System.out.println( "The Name in subclass is " + super.Name);
}
public static void main(String args[]){
Horse aa=new Horse();
aa.SetName( "xx ");
aa.SetData(1996,5,1);
aa.SetShow();
}
}