java父类没有无参构造 子类怎么调用父类的有参构造
时间: 2023-10-02 18:08:24 浏览: 104
当父类没有无参构造函数时,子类必须显式地调用父类的有参构造函数。在子类的构造函数中,可以使用 `super()` 关键字来显式地调用父类的构造函数,并传入相应的参数。例如,假设父类的有参构造函数为 `Parent(int arg)`,则子类的构造函数可以这样写:
```java
public class Child extends Parent {
public Child(int arg) {
super(arg); // 显式调用父类的有参构造函数
// 子类的其他初始化操作
}
}
```
其中 `super(arg)` 表示调用父类的有参构造函数,并传入参数 `arg`。注意,如果子类的构造函数没有显式地调用父类的构造函数,则编译器会自动调用父类的无参构造函数(如果有的话),否则会编译错误。因此,在父类没有无参构造函数的情况下,子类必须显式地调用父类的有参构造函数。
相关问题
java父类中没有无参构造子类中能有吗
如果父类中没有定义无参构造函数,那么子类中默认的构造函数会调用父类的无参构造函数,如果子类中也没有定义其它构造函数,那么编译器会自动为子类生成一个默认的无参构造函数。但是,如果父类中只定义了有参构造函数,则子类中必须在构造函数中显式地调用父类的有参构造函数或者定义一个有参构造函数并在其中调用父类的有参构造函数,否则编译器会报错。因此,子类中可以有无参构造函数,但是必须显式地调用父类的有参构造函数或者定义一个有参构造函数。
java子类有参构造方法必须调用父类有参构造方法吗
在Java中,如果父类有参构造方法,子类有参构造方法不一定需要调用父类有参构造方法,但是如果不调用,父类的属性就无法被初始化。如果子类显式地调用了父类的有参构造方法,则必须使用super关键字来调用,否则编译器会默认调用父类的无参构造方法。如果父类没有无参构造方法,子类必须显式地调用父类的有参构造方法。
以下是一个例子,演示了子类有参构造方法调用父类有参构造方法的情况:
```java
public class Father {
private int age;
public Father(int age) {
this.age = age;
}
}
public class Son extends Father {
private String name;
public Son(int age, String name) {
super(age);
this.name = name;
}
}
```
在上面的例子中,子类Son的有参构造方法调用了父类Father的有参构造方法,使用super关键字来调用。这样就可以保证父类的属性被正确地初始化。
阅读全文