抽象和具体的区别 类 在继承、构造函数等方面

Differences between abstract and concrete classes in inheritance, constructors, etc

我们都知道 class 中的抽象修饰符使它成为

除此之外,我还想确切地知道它背后所代表的所有变化或副作用。不能问 he/she 现在还没有什么,但我想知道在继承、构造函数等方面是否还有更多需要考虑的东西

除了描述的两个官方要点之外,抽象 class 和扩展、调用 super 时要考虑的具体行为之间是否有任何区别或特殊行为。

编译器是否假定它是一个常规 class 并且具有除了不允许实例化之外的所有属性?

摘要class在很大程度上是一种设计概念。与编译器相比,它为代码的读者做的更多。它们所需的编译器和 JVM 支持是最小的:它归结为在 class 上设置一个 "do not instantiate me" 标志,并在编译代码和尝试通过反射创建实例时检查它。

另一方面,您的代码的人类读者的好处要大得多:他们知道您设计抽象 class 是为了继承,并看到您通过抽象方法为他们做了哪些扩展点。此外,如果它们提供了对所有抽象方法的覆盖,编译器将跟踪它们。