作者cheetim (所失者寡所得者众??)
看板java
标题[问题] 请问一下override的情况
时间Wed May 7 19:41:12 2008
class Animal{
public String sizeType="no size";
//变数一
protected double getSize(int weight){
double amount=20.0;
amount =amount*weight;
System.out.println(sizeType+":"+amount);
return amount;
}
public void banner(){
System.out.println("I'm an Animal!");
}
}
class SmallAnimal extends Animal{
public String sizeType="small size";
//变数二
public double getSize(int weight){
double amount=100.0;
amount=amount*weight;
System.out.println(sizeType+":"+amount);
return amount;
}
public double getSize(){
System.out.println("small size");
return 0.0;
}
}
class Chicken extends SmallAnimal{
public double getSize(){
System.out.println("chick size");
return 0.0;
}
public void gogogo(){
this.banner();
this.getSize(20);
this.getSize();
System.out.println(this.sizeType);
Animal t2=this;
t2.banner();
t2.getSize(20);
//注解一
t2.getSize();
//这行会在compile time发现找不到method
System.out.println(t2.sizeType);
}
}
public class Test{
public static void main(String[] args){
Chicken chic=new Chicken();
chic.gogogo();
}
}
在注解一的地方,跑程式的结果是
small size:2000.0
Animal class的getSize(int)会被overrided所以值是
2000.0而不是400.0
但是变数不是不会被overrided吗?所以变数一的值因该不会变成变数二的值阿
结果为什麽不是no size:2000.0
希望版上高手可以帮我解说一下 谢谢搂
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.67.37.60