作者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