[問題] 多型的修飾詞?
各位前輩好, 今天天氣十分冷...大家要作好保暖
(小弟已經冷到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
12/27 12:04, 1F
→
12/27 12:05, , 2F
12/27 12:05, 2F
→
12/27 12:37, , 3F
12/27 12:37, 3F
→
12/27 12:39, , 4F
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
12/28 00:33, 6F
→
12/29 18:55, , 7F
12/29 18:55, 7F
討論串 (同標題文章)