java 子类有自己名字的构造器,还需要显示调用父类构造器吗,举例子说明
时间: 2024-01-16 13:04:10 浏览: 66
java中的继承(子类调用父类构造方法还不懂).doc
是的,Java中子类如果定义了自己的构造方法,并且父类中没有无参构造方法,那么子类必须显式地调用父类的有参构造方法,否则编译器会报错。
下面是一个例子,在这个例子中,父类中只定义了一个有参构造方法,子类中定义了一个自己名字的构造方法,但是没有显式地调用父类的构造方法,这时编译器会报错:
```java
class Parent {
private int id;
public Parent(int id) {
this.id = id;
}
}
class Child extends Parent {
private String name;
public Child(String name) {
this.name = name;
}
}
```
在上面的例子中,编译器会报错提示子类没有调用父类的构造方法。为了解决这个问题,我们需要在子类的构造方法中显式地调用父类的构造方法,如下所示:
```java
class Parent {
private int id;
public Parent(int id) {
this.id = id;
}
}
class Child extends Parent {
private String name;
public Child(int id, String name) {
super(id);
this.name = name;
}
}
```
在上面的例子中,子类的构造方法中使用super关键字调用了父类的有参构造方法,以确保父类的成员变量得到正确的初始化。
阅读全文