[問題] 請問一下override的情況
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):