为什么我们不能在多继承中创建派生类的对象而调用基类构造函数(java)

时间:2015-07-13 14:20:36

标签: java

class A
{
  public A()
  {...}
}

class B extends A
{
  public B(String s)
  {...}
}

class C extends B
{
  public C()
  {...}
}

class const
{
  public static void main(String a[])
  {
      B object=new B("Hello"); // gives error.
  }
}

为什么编译器会出错?>
error.java:18:错误:B类中的构造函数B不能应用于给定的类型; C类延伸B. ^   必需:字符串
  发现:没有参数
  原因:实际和正式的参数列表长度不同
1错误

1 个答案:

答案 0 :(得分:0)

你必须调用孩子的构造函数

构造函数创建其类型的对象,因此如果调用父构造函数,则只能创建父实例。这就是为什么它不被允许,你必须重写C类如下:

C object=new C("Hello"); // gives error.

注意:在这种情况下出错:

"values": [
    {"name": "name1"},
    {"name": "name2"},
    {"name": "name3"}
]