【问题标题】:What will happen if we have an empty child class in Java如果我们在 Java 中有一个空的子类会发生什么
【发布时间】:2021-03-20 07:27:05
【问题描述】:

子类可以访问父类的方法吗?

class Parent{
  private String s;

  public Parent(){
     s = "hi";
  }

  public String getS(){
    return s;
  }
}

class Child extends Parent{

}

【问题讨论】:

    标签: java oop inheritance


    【解决方案1】:

    当然。孩子可以访问所有公共、受保护和包访问方法和字段。孩子是“空的”这一事实并没有改变这一点。它甚至不需要显式构造函数,因为父级只有一个无参数的构造函数。

    【讨论】:

    • 所以不需要构造函数?
    • 它将继承默认构造函数。
    • 只有在父级没有默认构造函数或者不可访问的情况下才需要有构造函数。
    • @triplem "Inherit" 可能是错误的词。如果没有显式定义其他构造函数,编译器将生成默认构造函数,与类具有相同的可见性。默认构造函数将调用父类的无参数构造函数。请注意,如果父类中没有这样的构造函数,那么编译器将强制您在子类中定义构造函数并显式调用super(/* the args */)
    • @RichardBarker 是的,因为每个类都需要一个构造函数。即使您不引用构造函数也不意味着使用您的代码的其他人不会引用它。不要忘记反思。
    【解决方案2】:

    在子类中定义构造函数不是强制性的,因为会有一个默认构造函数,但是如果你打算在实例化子类时更改父类的任何属性,你可以定义一个构造函数,你可以在里面访问和改变父类的属性。

    class Child extends Parent{
      public Child() {
      s = "hi hi hi"
      }
    }    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 2022-08-22
      • 2012-06-06
      相关资源
      最近更新 更多