Java为什么子类写有参构造方法 不用写子类的无参构造方法
时间: 2023-05-19 09:03:38 浏览: 78
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关键字来调用。这样就可以保证父类的属性被正确地初始化。
为什么子类调用了父类的构造方法以后子类的有参构造方法里面还要写父类的形参变量
子类调用父类的构造方法是为了初始化父类的成员变量和执行父类的一些初始化操作。在子类的有参构造方法中,如果需要传递参数给父类的构造方法,则需要在子类的构造方法中显式地调用父类的构造方法,并传递相应的参数。
这是因为在Java中,子类继承了父类的属性和方法,但是不能直接访问父类的私有成员变量,只能通过父类的公有或受保护的方法来访问。当子类需要初始化父类的成员变量时,需要调用父类的构造方法来完成这个任务。
通过在子类的构造方法中调用父类的构造方法,并传递相应的参数,可以保证子类对象在创建时,先完成父类成员变量的初始化,再执行子类自身的初始化操作。这样可以确保对象的完整性和正确性。