繁体   English   中英

非抽象外部类中的抽象内部类

[英]Abstract inner class within non-abstract outer class

我有一个超类A和一个抽象内部类Inner,另一个超类B扩展了A。为什么A不能强制B实现抽象内部类?

我已经看过这里了 ,但是它只在非抽象类中指定了抽象方法。 同样的原则在这里适用吗?

public class A {
    ...

    abstract class Inner {
        ...
    }
}

public class B extends A { 
    ...

    // Isn't forcing me to implement Inner
}

内部类,不管它是否是抽象的,基本上是一个类的语法糖,该类具有对另一个类(其封闭类)的实例的内置引用。 嵌套的事实只会增加潜在的可访问性限制。 除此之外,它就像其他任何类一样(减去对static成员的其他一些限制)。

在许多情况下,无需实现A.Inner 我最近正在使用Java的无UI浏览器库。 他们有一个带有子类的Element类,例如AnchorInputSpanScriptStyle 当然,您不想被迫实现Element所有子类吗? 当超类是其他人的代码的成员时,尤其如此。 所述超类可以具有引用私有子类的私有方法。

因为除非B中的某些代码试图实例化A.Inner,否则这将是毫无意义的限制,在这种情况下,现有规则将已经捕获了它。

如果您定义了一个扩展抽象类的新具体类,则它必须实现这些方法。 但是您尚未定义扩展Inner的新具体类。 您已经定义了一个扩展A的新类B 从某种意义上说, B继承了Inner类,但它仍然是抽象的。 (您可以在某些情况下说B.Inner ,但是从我的测试看来,编译器将其与A.Inner相同。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM