作者darkgerm (黑駿)
看板java
標題[問題] 子類別能呼叫父類別被override的方法嗎
時間Sat Sep 3 02:32:45 2011
例如我寫了兩個 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)
1F:推 No:這就是多型的特性,還有這是override不是overloading 09/03 03:26
2F:→ darkgerm:喔對…中文叫重載? 09/03 03:36
※ 編輯: darkgerm 來自: 140.113.230.123 (09/03 03:37)
3F:推 jinn:原PO要的是不是 super.foo(); ? 09/03 10:49
4F:推 ayumi001:super好像只能在子類別裡面用 在另外一個類別應該不行吧 09/03 10:54
5F:推 tomoyaken14:已經overriding,就已經取代了原本的內容了 09/03 12:41
6F:推 LaPass:orz.... 真的有好多東西都被拿掉了.... 09/03 16:08
7F:推 TaiwanXDman:用super? 不過好像不能從外面用super@@ 09/04 00:09
8F:→ Chikei:不能,以C++的術語來說就是java所有的function都是virtual 09/05 11:19
9F:→ sbrhsieh:不是 virtual function 就不能稱為 override 09/05 22:05
10F:推 lachtchlee:在方法覆蓋中 子類重新定義父類方法時 方法的名字 參 09/05 23:42
11F:→ lachtchlee:數列表完全相同 但這些方法是存在於一個類層次結構的不 09/05 23:49
12F:→ lachtchlee:同類中 09/05 23:50
13F:→ lachtchlee:在這些子類中 雖然實現的方式不同 卻共享一個方法名 09/05 23:54