[問題] 請問一下override的情況

看板java作者 (所失者寡所得者眾??)時間17年前 (2008/05/07 19:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
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
文章代碼(AID): #188PLPVf (java)
文章代碼(AID): #188PLPVf (java)