public class Animal
{
private int legs;
private String kind;
public Animal()
{
setLegs(4);
}
public Animal(int l)
{
setLegs(l);
}
public void eat()
{
System.out.println("Eating");
}
public void move()
{
System.out.println("Moving");
}
public void setLegs(int l)
{
if (l != 0 && l != 2 && l != 4)
{
System.out.println("Wrong number of legs!");
return;
}
legs=l;
}
public int getLegs()
{
return legs;
} public void setKind(String str)
{
kind=str;
}
public String getKind()
{
return kind;
}
}//Animal.java
public class Fish extends Animal
{
public Fish()
{
setLegs(0);
setKind("Fish");
}
}//fish.java
public class Zoo
{
public static void main(String argv[])
{
Fish fish = new Fish();
System.out.println(fish.getKind()+" has "+ fish.getLegs()+" legs.");
}
}//Zoo.java
其中Fish类继承了Animal类,随便修改Fish类中的SetLegs(int i)方法的i的值,除了i=0,2,4外,其他值为什么返回的结果都是
"Fish has 4 legs."因为是初学者自学,希望能够认真详细的解答。
{
private int legs;
private String kind;
public Animal()
{
setLegs(4);
}
public Animal(int l)
{
setLegs(l);
}
public void eat()
{
System.out.println("Eating");
}
public void move()
{
System.out.println("Moving");
}
public void setLegs(int l)
{
if (l != 0 && l != 2 && l != 4)
{
System.out.println("Wrong number of legs!");
return;
}
legs=l;
}
public int getLegs()
{
return legs;
} public void setKind(String str)
{
kind=str;
}
public String getKind()
{
return kind;
}
}//Animal.java
public class Fish extends Animal
{
public Fish()
{
setLegs(0);
setKind("Fish");
}
}//fish.java
public class Zoo
{
public static void main(String argv[])
{
Fish fish = new Fish();
System.out.println(fish.getKind()+" has "+ fish.getLegs()+" legs.");
}
}//Zoo.java
其中Fish类继承了Animal类,随便修改Fish类中的SetLegs(int i)方法的i的值,除了i=0,2,4外,其他值为什么返回的结果都是
"Fish has 4 legs."因为是初学者自学,希望能够认真详细的解答。
{
setLegs(4);
}默认设置为4
当Fish fish = new Fish();
会首先默认调用 父类构造函数
也就是
public Animal()
{
setLegs(4);
}
{
super(xxx);
setKind("Fish");
}
fish中的getleg()和setlegs()是继承的父类的 所以他取得legs值为父类中legs的值 legs是私有的子类不能用它
你将legs声明为public
如果在父类中写了有参的构造器,此时在子类的构造器中必须显示的调用父类的有参构造器super(参数)。
他听父类的 你想通过fish改legs值 得在fish重重定义