我读了这个问题并认为如果有人可以写的话很容易解决(不是没有它可以解决):
@Override
public String toString() {
return super.super.toString();
}
Run Code Online (Sandbox Code Playgroud)
我不确定它在许多情况下是否有用,但我想知道为什么它不是,如果这样的东西存在于其他语言中.
你们有什么感想?
编辑: 澄清:是的,我知道,这在Java中是不可能的,我不会真的错过它.这不是我期望的工作,并且惊讶于编译错误.我刚才有了这个想法并想讨论它.
我观察到外类可以访问内部类私有实例变量.这怎么可能?以下是演示相同内容的示例代码:
class ABC{
class XYZ{
private int x=10;
}
public static void main(String... args){
ABC.XYZ xx = new ABC().new XYZ();
System.out.println("Hello :: "+xx.x); ///Why is this allowed??
}
}
Run Code Online (Sandbox Code Playgroud)
为什么允许这种行为?
对于编码项目,我有一个包含嵌套类的类.嵌套类在同一外部类中进行子类化.目的是让外部类包含嵌套类的一些实例,它可以将其交给外部类的其他实例.
嵌套子类允许外部类修改内容,而其超类允许读取内容并调用某些方法.因此,超类对象被传递给其他对象以链接链中的外部类对象.
我的问题涉及访问修饰符.这是一个极简主义的代码示例:
abstract class OuterClass {
protected class NestedSuperClass<T> {
private T data;
public NestedSuperClass (T t) {
this.data = t;
}
public T getOutput() {
return data;
}
}
protected class NestedSubClass<T> extends NestedSuperClass<T> {
public NestedSubClass (T t) {
super(t);
}
protected void setOutput(T t) {
super.data = t;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在查找一些文档时,我对访问超类的私有字段的能力感到困惑,这些字段在任何地方都没有提到.是否有任何资源解释为什么允许子类以这种方式修改超类的私有字段?
这项工作我完全没事.我还注意到它似乎与数据被标记为受保护而不是私有而不使用超级关键字.我最感兴趣的是提到super关键字的这种能力的任何文档.提前致谢.