在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方
时间: 2024-06-02 10:11:25 浏览: 12
法的第一行。这是因为子类构造方法中必须先调用父类的构造方法来完成父类的初始化工作,然后才能进行子类自身的初始化工作。如果在子类构造方法的第一行不使用super()来调用父类的构造方法,那么编译器会自动添加一个默认的super()调用,但是如果父类没有无参构造方法,编译器就会报错。因此,为了保证程序的正确性,我们要在子类构造方法的第一行显式地调用父类的构造方法,确保父类的初始化工作得以顺利完成。
相关问题
能否在子类的构造方法中用super关键字调用父类的构造方法?
可以在子类的构造方法中使用super关键字调用父类的构造方法。在子类的构造方法中,使用super()调用父类的无参构造方法;如果父类没有无参构造方法,可以使用super关键字调用父类的其他构造方法,并传递相应的参数。例如:
```java
// 父类
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
}
// 子类
public class Student extends Person {
private int age;
public Student(String name, int age) {
super(name); // 调用父类的有参构造方法
this.age = age;
}
}
```
父类有参数构造方法,子类无参数构造方法,用super能调用父类构造方法嘛
可以的。在子类的无参构造方法中,可以使用 `super()` 调用父类的无参构造方法。如果父类只有带参数的构造方法,子类无法继承该构造方法,但是可以在子类的构造方法中使用 `super()` 调用父类的带参数的构造方法。例如:
```java
public class ParentClass {
private int age;
public ParentClass(int age) {
this.age = age;
}
}
public class ChildClass extends ParentClass {
private String name;
public ChildClass(String name) {
super(20); // 调用父类的带参数构造方法
this.name = name;
}
}
```
在上面的例子中,子类 `ChildClass` 中没有定义任何构造方法,因此会自动继承父类的构造方法。但是父类只有一个带参数的构造方法,因此需要在子类的构造方法中使用 `super(20)` 调用父类的构造方法。这样,子类就可以通过调用父类的构造方法来初始化父类的属性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)