我怀疑我想做什么是可能的。我有三个类A,B y C. B扩展A和C扩展B。
C - > B - >甲
在C类中,我想直接调用A类的方法。像
这样的东西super.super.method();
我有机会这样做吗?
原因:
A和B是系统类。我试图让B以不同的方式处理某些情况,除了一种方法我已经完成了它。在其他方法中,我所做的是覆盖它们并传递修改后的参数。
现在我有一个方法,我无法解决只修改参数所以我想完全覆盖它。
乙
@Override
public void draw(Canvas canvas) {
super.draw(canvas); // A method
** other stuff **
}
我想用C做什么
@Override
public void draw(Canvas canvas) {
super.super.draw(canvas); // A method
** new stuff **
}
答案 0 :(得分:4)
Jon Skeet从here获取最合适的答案
你不能 - 因为它会破坏封装。
你可以调用你的超类的方法,因为它假设你知道什么打破了你自己的类中的封装,并避免...但你不知道你的超类强制执行什么规则 - 所以你不能只是绕过那里的实施。
答案 1 :(得分:2)
你做不到。
super
只允许您访问直接超类。
如果您认为需要这样做,您可能会遇到设计问题。你能告诉我们你想做什么的更多细节吗?
答案 2 :(得分:0)
我认为这是不可能的。也许你可以这样实现。
B级
method(){
super.method()
}
然后在C类中你可以调用super.method()。这样你最终会调用A的方法。
答案 3 :(得分:0)
class A
{
void access()
{
//this method is to be accessed
System.out.println("I can be accessed");
}
}
class B extends A
{
//code here
}
class C extends B
{
public static void main(String[] args)
{
C ob = new C();
ob.call();
}
void call()
{
super.access();
}
}
答案 4 :(得分:-2)
super
可用于调用您的直接父类。
您可以设计一个class B
函数,以便super调用class A
。现在,您可以使用class C
来获得所需的结果。