abstract class Animal {
private String name;
private char sex;
private Date birthday;

public Animal(String name, char sex, Date birthday) {
this.name = name;
this.sex = sex;
this.birthday = birthday;
}

public abstract void act();
}class Tiger extends Animal {
private String name;
private char sex;
private Date birthday;

public Tiger(String name, char sex, Date birthday) {
super(name, sex, birthday);
}

public void act() {
System.out.println("不会游,不能飞");
}
}class Swallow extends Animal {
private String name;
private char sex;
private Date birthday;

public Swallow(String name, char sex, Date birthday) {
super(name, sex, birthday);
}

public void act() {
System.out.println("不会游,能飞");
}
}class Dolphin extends Animal {
private String name;
private char sex;
private Date birthday;

public Dolphin(String name, char sex, Date birthday) {
super(name, sex, birthday);
}

public void act() {
System.out.println("会游,不能飞");
}
}

解决方案 »

  1.   

    我是新手.请问get 方法写在抽象类里面还是具体的类中.
      

  2.   

    abstract class Animal {
            private String name;
            private char sex;
            private MyDate birthday;        public Animal(String name, char sex, MyDate birthday) {
                    this.name = name;
                    this.sex = sex;
                    this.birthday = birthday;
            }        public abstract void act();
            public String getName(){
              return name;
            }        public char getSex(){
              return sex;
            }        public MyDate getBirthday(){
              return birthday;
            }
    }
    是这样吗!那么我再调用问题2设置的List时,我应经如果让信息显示出来。
      static void print(String wantToPrint) {
        System.out.print(wantToPrint);
      }  static void println(String wantToPrint) {
        System.out.println(wantToPrint);
      }  public static void main(String[] args) {    List list = new ArrayList();
        list.add(new Tiger("t1",'0',new MyDate (2001,4,12)));
        list.add(new Tiger("t2",'0',new MyDate (2001,2,12)));
        list.add(new Tiger("t3",'1',new MyDate (2004,12,10)));
        list.add(new Tiger("t4",'1',new MyDate (1997,2,10)));
        list.add(new Swallow("s1",'0',new MyDate (1997,2,10)));
        list.add(new Swallow("s2",'0',new MyDate (2001,2,12)));
        list.add(new Swallow("s3",'1',new MyDate (2001,4,12)));
        list.add(new Swallow("s4",'1',new MyDate (2004,12,10)));
        list.add(new Dolphin("d1",'1',new MyDate (2004,12,10)));
        list.add(new Dolphin("d2",'1',new MyDate (2001,4,12)));
        list.add(new Dolphin("d3",'0',new MyDate (2001,2,12)));
        list.add(new Dolphin("d4",'0',new MyDate (1997,2,10)));    for (int i=0; i<list.size(); i++ ){
          //这里面怎么显示对象的内容。
        }  }
    注释:MyDate是我自己的写的日期类。
      

  3.   

    还有一个问题:
    第三个问题中:
    燕子飞的时候,打印一句这样的话: "Swallow <燕子的名字> is flying."
    海豚游泳的时候,打印: "Dolphin <海豚的名字> is swimming."这个应该如何实现?
      

  4.   

    我的意思是说用abstract void act();可扩展性好吗?还有没有别的解决方案?