Java 非抽象外部类中的抽象内部类
我有一个超类a和一个抽象的内部类,还有一个扩展了a的类B。为什么a不强制B实现抽象的内部类呢 我已经看过了,但它只在非抽象类中指定抽象方法。同样的原则在这里适用吗Java 非抽象外部类中的抽象内部类,java,abstract-class,abstract,Java,Abstract Class,Abstract,我有一个超类a和一个抽象的内部类,还有一个扩展了a的类B。为什么a不强制B实现抽象的内部类呢 我已经看过了,但它只在非抽象类中指定抽象方法。同样的原则在这里适用吗 public class A { ... abstract class Inner { ... } } public class B extends A { ... // Isn't forcing me to implement Inner } 一个内部类,不管它是抽
public class A {
...
abstract class Inner {
...
}
}
public class B extends A {
...
// Isn't forcing me to implement Inner
}
一个内部类,不管它是抽象的还是非抽象的,基本上都是一个类的语法糖,这个类有一个对另一个类(它的封闭类)实例的内置引用。它是嵌套的这一事实只是增加了潜在的可访问性限制。除此之外,它与任何其他类一样(减去对
静态成员的一些其他限制) 在许多情况下,不需要实现A.internal
。我最近正在使用一个面向Java的无UI浏览器库。他们有一个类元素
,其子类包括锚定
,输入
,Span
,脚本
,样式
。例如,您肯定不想被迫实现元素
的所有子类?当超类是其他代码的成员时尤其如此。所述超类可能具有引用私有子类的私有方法。因为这将是一个无意义的限制,除非B中的某些代码尝试实例化a.Inner,在这种情况下,现有规则将已经捕获它。如果定义扩展抽象类的新具体类,它必须实现这些方法。但是您还没有定义一个扩展internal
的新的具体类。您已经定义了一个扩展a
的新类B
;从某种意义上说,B
继承了内部
类,但它仍然是抽象的。(在某些上下文中可以说B.Inner
,但从我的测试来看,编译器似乎将其视为与A.Inner
相同)