public abstract class Animal {
protected int legs;
protected Animal(int legs){
this.legs = legs;
}public abstract void eat();
public abstract void breath();}
interface Pet{
public void play();
}
public  class Dog extends Animal implements Pet{
String name;        
public Dog(String name){      //为什么会错的?在子类里的构造器不能多态吗?               
this.name = name;
}

public Dog(int legs){
super(legs);
}

public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void eat(){
System.out.println("狗喜欢啃骨头");
}
public void breath(){
System.out.println("狗使用肺呼吸");
}
public void play(){
System.out.println("狗正在和一只可怜的老鼠逗着玩呢");
}
}

解决方案 »

  1.   

    public Dog(String name){ //为什么会错的?在子类里的构造器不能多态吗?   
    this.name = name;
    }
    该构造器里面会隐含的调用super(int dd)方法,也就是父类的构造方法!  去掉父类的构造方法即可!
      

  2.   

    或者
    public Dog(String name){ //为什么会错的?在子类里的构造器不能多态吗? 
    super(int var)  ;
    this.name = name;
    }
    这样也行!
      

  3.   

    public class Demo7 {
    public static void main(String args[]){
    Dog d=new Dog("大黄",20);

    System.out.println("姓名: "+d.getName()+"\n腿长:" +d.legs);
    d.eat();
    d.breath();
    d.play();

    }}
     abstract class Animal {
     protected int legs;
     protected Animal(int legs){
     this.legs = legs;
     } public abstract void eat();
    public abstract void breath(); }
    interface Pet{
     public void play();
    }
     class Dog extends Animal implements Pet{
     String name;   
    /*public  Dog(){ //为什么会错的?在子类里的构造器不能多态吗?   
    this.name = name;
     }*/
     
    public Dog(String name,int legs){

     super(legs);
     this.name=name;
     }

     
    public String getName(){
     return name;
     }
     public void setName(String name){
     this.name = name;
     }
     public void eat(){
     System.out.println("狗喜欢啃骨头");
     }
     public void breath(){
     System.out.println("狗使用肺呼吸");
     }
     public void play(){
     System.out.println("狗正在和一只可怜的老鼠逗着玩呢");
     }
    }