如何调用父类的父类中被覆盖的方法?

dengzc102 2008-02-24 10:50:18
C extends B,B extends A
A,B,C均有方法d();
在C中,super.d()可以访问B中的d()方法,
如果还想在C中直接访问A中的d()方法怎么办?
...全文
901 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
juddy_liu 2008-05-05
  • 打赏
  • 举报
回复
不要进牛角尖,何苦呢?
zhangyanfei01 2008-03-01
  • 打赏
  • 举报
回复
同意10楼的观点,
minmaxlee 2008-03-01
  • 打赏
  • 举报
回复
试一试名字空间引用
C++里面可以这样,java里面我没有试过
huliang66 2008-03-01
  • 打赏
  • 举报
回复
正解


[Quote=引用 10 楼 Dan1980 的回复:]
这样不对的!

父类既然覆盖了祖父类的方法,就是希望孙子类都要么继承自己的,要么继续覆盖。如果可以这样乱来的话,继承机制就形同虚设了。
[/Quote]
Dan1980 2008-02-28
  • 打赏
  • 举报
回复
这样不对的!

父类既然覆盖了祖父类的方法,就是希望孙子类都要么继承自己的,要么继续覆盖。如果可以这样乱来的话,继承机制就形同虚设了。
睿音 2008-02-27
  • 打赏
  • 举报
回复
to 6楼,本来我就觉得楼主的方法是不对的。所以并没有给他答案。
我只是告诉他java对于继承方法覆盖是怎么处理的。按照原理判断,他自然会知道他想的方法是不可行的。
kaiwaring 2008-02-25
  • 打赏
  • 举报
回复
2楼的方法MS不行。。。
老紫竹 2008-02-25
  • 打赏
  • 举报
回复
用拦截器,修改父类的方法,第一句改为super.method();

有点卑鄙!
kkkdyc 2008-02-25
  • 打赏
  • 举报
回复
直接访问很难搞
new 吧,在 c 里面 new A
dengzc102 2008-02-24
  • 打赏
  • 举报
回复
恩,谢谢大家的回答,刚接触JAVA不久,并不知道这样做有悖设计原理,只是比较好奇这样的访问方式,再次感谢一下
边城狂人 2008-02-24
  • 打赏
  • 举报
回复
Reflection似乎也不行,呵呵,看来是没啥办法了。
睿音 2008-02-24
  • 打赏
  • 举报
回复
不过Ps.你这种设计原则是不对滴。滥用的继承是我最反对的。
睿音 2008-02-24
  • 打赏
  • 举报
回复
需要前提条件。你超类的d方法是静态的还是非静态的。
举个例子。如果你的d方法在a中是这样写的

class A {
static String d()
{
return "A";
}

class b extends a
{
static String d()
{
return "B";
}

现在A中的d方法是静态的。如果这样调用b时。会返回的字符是"A"
如果A中的d方法不是静态的。如果这样调用b时。会返回的字符是"B".

有一个原则:实例方法被覆盖,静态方法被隐藏

只不过你现在的问题是多重继承。按照这个原则判断就行了
边城狂人 2008-02-24
  • 打赏
  • 举报
回复
不能这么干。
如果你实在想这么干,那可以试试用Reflection

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧