[問題] 請問有關於head first java書上程式碼的問題??

看板java作者 (OK的啦~我都可以接受)時間17年前 (2008/07/28 21:52), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
這是出自head first java 一書 p.255 以下是程式碼 : ------------------------------------------------------------------------- abstract class Animal{ private String name; public String getName(){ return name; } public Animal(String theName){ name = theName; } } class Hippo extends Animal{ public Hippo(String name){ super(name); } } public class MakeHippo{ public static void main(String[] s){ Hippo h = new Hippo("Buffy") ; System.out.println(h.getName()); } } -------------------------------------------------------------------------- 這是執行結果 : % java MakeHippo Buffy 因為 name 這個變數是private的 所以不會被 Hippo 繼承下來 而getName() 這個 method 因為是public 所以會被繼承下來 也就是說 目前的 Hippo 這個 class 只有自己的 constructor 和 getName (還有 Animal 的 constructor??) 那在我的想法裡 getName 應該是看不到 name 這個 variable OTZ 目前我提出的解釋是這樣 : 就是雖然說繼承可以只寫一份程式碼 可是本質上還是跟寫在各自的 class 不大相同 我記得之前看一本書上說 instance method 都會多傳一個 this 當作是參數 所以我猜測 Animal 這個 class 裡 getName() 可以說是 public String getName(Animal this){ return this.name; } 而 Hippo 這個 class 裡的 getName() 或許就是 public String getName(Hippo this){ return super.getName(this); } 因為有 polymorphism 所以導致仍然看得到 name 這個 variable 不知道我這樣說對不對哩 @@>?? 請大家指教 <(__)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.233.241.84

07/31 08:22, , 1F
這跟 Access Modifiers (private, public) 有關
07/31 08:22, 1F

07/31 08:24, , 2F
這範例還稱不上 polymorphism 的應用
07/31 08:24, 2F
文章代碼(AID): #18ZSygiN (java)