我正在学习嵌套类和内部类,这使我开始思考是否有可能将内部类扩展为嵌套类。例如。
public class Outer{
public class Inner{
// notice the lack of static keyword
}
}
public class ExtendedOuter extends Outer{
public static class ExtendedInner extends Inner{
// notice the static keyword
}
}
我确实尝试过编译上面的代码,但不能,但是我收到的编译时错误使我相信可能会有解决方法。但是,我可以将嵌套类扩展为内部类。
这是我收到的编译时错误。
最佳答案
实际上,您可以扩展内部类。您只需要提供该类将绑定(bind)到的Outer
实例即可。为此,您必须使用实例显式调用super
构造函数。
public class Outer {
public class Inner{
// notice the lack of static keyword
}
}
public class ExtendedOuter extends Outer {
private static Outer outer = new ExtendedOuter(); // or any other instance
public static class ExtendedInner extends Inner {
public ExtendedInner() {
outer.super(); // this call is explicitly required
}
}
}
如果您有一个嵌套类,该嵌套类从另一个封闭类扩展了另一个嵌套类,则此方法也适用。
关于java - 将内部类扩展为嵌套类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20316675/