PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
java
[問題] 多繼承super的問題
作者:
egheee
(阿平)
2014-12-19 12:15:54
class A {
void tell() {
Log.e("", "I am a");
}
}
class B extends A{
void tell() {
Log.e("", "I am b");
}
}
class C extends B {
void tell() {
super.super.tell(); // 問題
Log.e("", "I am c");
}
}
如上列所示,這樣的寫法是有問題的,super好像規定只能用一次
請問我要怎麼從C裡面call到A的tell()呢?
作者:
sCHb68
(sCHb68)
2014-12-19 12:31:00
在 class C 正確用一個 super ,然後在 class B 再使用 super 不知能否解決原PO問題。
作者: egheee (阿平)
2014-12-19 14:06:00
我就是想要跳過B直接call A的,這樣的方式會連B一起call到
作者:
gpctv
(gpctv)
2014-12-19 14:55:00
那為何不直接在C建立物件就可直接call C的tell方法啦?!不曉得這樣你懂不懂我的意思
作者:
ssccg
(23)
2014-12-19 15:04:00
class封裝來說,繼承就是取得parent的非private的member但是parent又去繼承了什麼東西是parent class的實作細節child class知道parent有tell(),但不該知道parent的第幾層parent有個tell(),那不是由繼承能使用的介面你想跳過B這件事就有問題了,C本來就不該知道B是繼承了什麼C只知道B提供什麼,不知道那是B自己實做還是繼承來的
作者:
Peruheru
(還在想)
2014-12-19 15:08:00
所以你如果要A的什麼,你應該是去繼承A,而不是繼承B不然就是B當初設計就要為A的tell()另外提供一個方法比如說tellbyA之類的B表示:朕不給的,你不能要
作者:
swpoker
(swpoker)
2014-12-19 15:14:00
has is use
作者:
gpctv
(gpctv)
2014-12-19 15:36:00
樓上說的其實很有道理,但是你硬要這樣做那就建立物件吧!
http://pastie.org/9789546
繼續閱讀
Re: [問題] 請教String的問題
kdok123
Re: [問題] Generic 的 cast 問題
changyuheng
[問題] 使用Java寫Web Crawler
Sofya
為什麼Java does not support pointer?
tpps88206
[出售] Oracle Java考試券
dcnet
Re: [問題] 請教String的問題
Chikei
Re: [問題] 請教String的問題
darkk6
Re: [問題] 請教String的問題
darkk6
Re: [問題] 請教String的問題
kdok123
[問題] 請教String的問題
kdok123
Links
booklink
Contact Us: admin [ a t ] ucptt.com