【问题标题】:Differences between abstract and concrete classes in inheritance, constructors, etc抽象类和具体类在继承、构造函数等方面的区别
【发布时间】:2023-03-13 14:45:01
【问题描述】:

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

  • 不可实例化,
  • 抽象方法的候选人,
  • 非最终、非静态、非私有

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

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

编译器是否假定它是一个常规类,并且除了不允许实例化之外,它还具有其他所有内容的属性?

【问题讨论】:

  • 试着把它定为final,你会看到编译器是否对待它完全一样。
  • 是的!在你回答的时候,我正在编辑它!谢谢

标签: java inheritance abstract-class


【解决方案1】:

抽象类在很大程度上是一个设计概念。它为代码的读者做的比它为编译器做的更多。它们所需的编译器和 JVM 支持很少:归结为在类上设置“不要实例化我”标志,并在编译代码和尝试通过反射创建实例时检查它。

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

【讨论】:

  • 真棒权威问题
猜你喜欢
  • 1970-01-01
  • 2015-08-06
  • 2015-10-25
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
相关资源
最近更新 更多