[問題] 子類別能呼叫父類別被override的方法嗎

看板java作者 (黑駿)時間12年前 (2011/09/03 02:32), 編輯推噓7(706)
留言13則, 10人參與, 最新討論串1/1
例如我寫了兩個 class class base { public void foo() { System.out.println("base"); } } class derived extends base { public void foo() { System.out.println("derived"); } } 這時如果寫 new derived().foo(); 會印出 derived 但如果我想要讓他呼叫到 base 的 foo(),有辦法嗎? 試過先轉型成 base,但沒用 ( (base)(new derived()) ).foo() // derived 雖然目前不知道這樣可以做什麼 但因為 C++ 可以這麼做,很好奇 java 能不能 -- 光明 的背後 是 黑暗 黑暗 的背後 還是 黑暗 由此可知 黑暗 > 光明 Q.E.D. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.230.123 ※ 編輯: darkgerm 來自: 140.113.230.123 (09/03 02:35)

09/03 03:26, , 1F
這就是多型的特性,還有這是override不是overloading
09/03 03:26, 1F

09/03 03:36, , 2F
喔對…中文叫重載?
09/03 03:36, 2F
※ 編輯: darkgerm 來自: 140.113.230.123 (09/03 03:37)

09/03 10:49, , 3F
原PO要的是不是 super.foo(); ?
09/03 10:49, 3F

09/03 10:54, , 4F
super好像只能在子類別裡面用 在另外一個類別應該不行吧
09/03 10:54, 4F

09/03 12:41, , 5F
已經overriding,就已經取代了原本的內容了
09/03 12:41, 5F

09/03 16:08, , 6F
orz.... 真的有好多東西都被拿掉了....
09/03 16:08, 6F

09/04 00:09, , 7F
用super? 不過好像不能從外面用super@@
09/04 00:09, 7F

09/05 11:19, , 8F
不能,以C++的術語來說就是java所有的function都是virtual
09/05 11:19, 8F

09/05 22:05, , 9F
不是 virtual function 就不能稱為 override
09/05 22:05, 9F

09/05 23:42, , 10F
在方法覆蓋中 子類重新定義父類方法時 方法的名字 參
09/05 23:42, 10F

09/05 23:49, , 11F
數列表完全相同 但這些方法是存在於一個類層次結構的不
09/05 23:49, 11F

09/05 23:50, , 12F
同類中
09/05 23:50, 12F

09/05 23:54, , 13F
在這些子類中 雖然實現的方式不同 卻共享一個方法名
09/05 23:54, 13F
文章代碼(AID): #1EOI5HDY (java)