[問題] 多型的修飾詞?

看板java作者 (交給C4就對了)時間10年前 (2013/12/27 11:27), 編輯推噓1(106)
留言7則, 5人參與, 最新討論串1/5 (看更多)
各位前輩好, 今天天氣十分冷...大家要作好保暖 (小弟已經冷到key字都會抖了~~~) 最近在研究「多型」的概念,也爬了許多版上的文章,其中有一篇文章有一個程式 我有研究一下,但一直搞不太懂,程式碼如下: ======================================================================== class Base2{ private void foo(){ System.out.println("Base2"); } } class Derived2 extends Base2{ public void foo(){ System.out.println("Derived2"); } } public class Practice { static void basefoo(Base2 b){ b.foo(); } static void derivefoo(Derived2 d){ d.foo(); } public static void main(String[] args) { basefoo(new Derived2()); derivefoo(new Derived2()); } } ====================================================================== 我想請問的觀念是: 在main裡,我將new Derived2()指派給了Base2 b,雖然原先class Base2裡的method foo 是設為private,但就多型來說,我應該也把Drived2的public method foo給了b ,理當b.foo()應該是可以執行的吧? (ps. 紅色的部份就是不能執行) 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.110.189 ※ 編輯: broodstare 來自: 140.115.110.189 (12/27 11:28)

12/27 12:04, , 1F
就多型來說, 是由 Base2 的觀點來看你要執行的 function
12/27 12:04, 1F

12/27 12:05, , 2F
沒有把 Drived2 的方法給 b (反向繼承?) 這種事 @@
12/27 12:05, 2F

12/27 12:37, , 3F
這幾個class的耦合性還是很高..不是學習泛型的好例子..
12/27 12:37, 3F

12/27 12:39, , 4F
你的疑問 只要單純寫一個 new Base2() 然後看看能不能foo()
12/27 12:39, 4F

12/27 13:55, , 5F
要由上而下~而非由下而上
12/27 13:55, 5F
謝謝各位版大們回答!! (很抱歉因為今天下午忙碌,沒法即時回應) 我想自己也有點混亂了,那我想再請問一些追加的相關問題: Base2 b = new Derived2(); 就這個範例,是個好的寫法嗎? 是因為super-class Base2 與sub-class Derived2 的method有所重疊(即便他們的modifier不同),導致這不是個很好例子? 所以要竟量避開這種寫法嗎? 謝謝Q___Q ※ 編輯: broodstare 來自: 140.115.5.114 (12/27 23:08)

12/28 00:33, , 6F
B b = new D() 這沒啥問題,很多時候都是這樣用
12/28 00:33, 6F

12/29 18:55, , 7F
jej正解,原po連可視都還沒搞懂。談多型有點早了。
12/29 18:55, 7F
文章代碼(AID): #1IlFEbOv (java)
討論串 (同標題文章)
文章代碼(AID): #1IlFEbOv (java)