我读了这个问题并认为如果有人可以写的话很容易解决(不是没有它可以解决):
@Override
public String toString() {
return super.super.toString();
}
Run Code Online (Sandbox Code Playgroud)
我不确定它在许多情况下是否有用,但我想知道为什么它不是,如果这样的东西存在于其他语言中.
你们有什么感想?
编辑: 澄清:是的,我知道,这在Java中是不可能的,我不会真的错过它.这不是我期望的工作,并且惊讶于编译错误.我刚才有了这个想法并想讨论它.
我有三个简单的课程:
class A {
public A(int a){ }
}
class B extends A {
public B(int b){ super(b); }
}
class C extends B {
public C(int c){ super(c); }
}
Run Code Online (Sandbox Code Playgroud)
因此,类实例化期间的执行顺序是C-> B-> A-> B-> C,并且所有对象都被正确实例化.那么,问题是:
我可以用某种方式为C类编写一个构造函数,如下所示:
public C(int c){
super.super(c);
}
Run Code Online (Sandbox Code Playgroud)
这个想法是从A类调用构造函数,而不是从直接父B调用构造函数.这可能吗?
我想我错过了一些东西,或者没有点击我的东西.我正在读一本关于java的书,我刚学到了super().当用于获取构造函数时,它从一个超类中获取构造函数,对吗?如果你想去两个超级课程怎么办?怎么办呢?
有些东西并没有坐在我的大脑中,我希望这个问题可以帮助我把各个部分放在一起.