继承,构造函数等中抽象类和具体类之间的差异

时间:2015-11-27 11:58:16

标签: java inheritance abstract-class

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

  • 非实例,
  • 抽象方法的候选人,
  • 非最终,非静态,非私人

除此之外,我想知道它所代表的所有变化或副作用。人们不能问他/她现在还没有,但是我想知道在继承,构造者等方面是否还需要考虑更多。

除了所描述的两个官方观点之外,抽象类和扩展时要考虑的具体行为之间是否存在任何差异或特殊行为,称为超级。

编译器是否认为它是一个常规类,并且除了禁止实例化之外还有其他所有属性?

1 个答案:

答案 0 :(得分:4)

抽象类在很大程度上是一个设计概念。它为代码的读者提供的功能比编译器的功能更多。它们所需的编译器和JVM支持是最小的:它归结为在类上设置“do not instantiate me”标志,并在编译代码时以及在尝试通过反射创建实例时检查它。

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