【问题标题】:Java - is superclass executed while running subclassJava - 在运行子类时执行超类
【发布时间】:2017-02-18 15:08:16
【问题描述】:

我有两个java类,一个是超类,另一个是基类。这意味着基类继承了超类。我能够理解这个概念。我的疑问是“如果我单独执行或运行基类,是否执行超类?”。

如果我只执行基类,我想知道是否执行了超类。

【问题讨论】:

  • 运行。你调用方法;对于这些,有有据可查的规则如何发挥多态性。
  • 我认为您对面向对象有错误的概念。类(或者更确切地说是对象)不会被“执行”。您可以调用对象的方法或设置属性。此外,“运行时...”意味着您认为存在某种并行性。
  • 在实例化期间(调用 new ...),调用基类的默认(无参数)构造函数,如果没有默认构造函数或者您想使用另一个,则需要显式调用父类使用 super() 作为子类构造函数中的第一条语句的构造函数。
  • 非常感谢您的 cmets。我从你的 cmets 那里学到了

标签: java inheritance extends


【解决方案1】:

阅读https://www.sitepoint.com/interface-and-inheritance-in-java-inheritance/

baseclass 也是您认为的超类。继承意味着孩子已经拥有父母在同一个包中拥有的所有属性/属性/方法和变量。孩子可以做他能做的任何事情,而父母可以通过继承它来做任何事情。因此,父母不再需要运行,因为孩子已经知道父母可以做什么。

如果你执行了 parent,child 不会被执行,并且 parent 没有 child 属性。 如果您执行子代继承父代。子进程使用 parents 属性执行,但父级本身不是。

【讨论】:

    【解决方案2】:

    在实例化期间(调用 new ...),调用基类的默认(无 args)构造函数,如果没有默认构造函数或者您想使用另一个,则需要使用 super() 显式调用父构造函数作为子类的构造函数中的第一条语句。也调用非静态初始化块以及变量实例化。这可以称为“运行父类”。还有静态初始化 - 静态初始化块和静态变量初始化,它们在类首次使用之前运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 2018-09-26
      相关资源
      最近更新 更多