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