子类对象初始化时,当父类没有无参构造函数时,会调用父类的非无参构造函数吗
时间: 2024-03-01 08:51:03 浏览: 67
在Java中,如果父类没有无参构造函数,则在子类对象初始化时,必须显式地调用父类中带有参数的构造函数。否则,编译器会抛出编译错误。
例如,如果我们有如下父类:
```java
public class Parent {
public Parent(int value) {
// ...
}
}
```
那么,如果我们要创建一个子类对象,我们必须在子类的构造函数中显式地调用父类的构造函数,如下所示:
```java
public class Child extends Parent {
public Child(int value) {
super(value);
// ...
}
}
```
在这个例子中,我们在子类的构造函数中调用了父类的带有参数的构造函数 `super(value)`,以确保父类的构造函数被正确地调用。
相关问题
c#中子类对象初始化时,当父类没有无参构造函数时,会调用父类的非无参构造函数吗
和Java一样,在C#中,如果父类没有无参构造函数,则在子类对象初始化时,必须显式地调用父类中带有参数的构造函数。否则,编译器会抛出编译错误。
例如,如果我们有如下父类:
```csharp
public class Parent {
public Parent(int value) {
// ...
}
}
```
那么,如果我们要创建一个子类对象,我们必须在子类的构造函数中显式地调用父类的构造函数,如下所示:
```csharp
public class Child : Parent {
public Child(int value) : base(value) {
// ...
}
}
```
在这个例子中,我们在子类的构造函数中调用了父类的带有参数的构造函数 `base(value)`,以确保父类的构造函数被正确地调用。
父类和子类都只有有参构造函数的时候,子类对象初始化的时候,首先调用父类有参构造函数吗
是的,当子类对象进行初始化时,首先会调用父类的有参构造函数来初始化父类的成员变量,然后再调用子类的有参构造函数来初始化子类的成员变量。这是因为子类继承了父类的成员变量和方法,因此在创建子类对象时需要先初始化父类的成员变量。如果父类只有无参构造函数,子类有参构造函数,则在子类构造函数中可以通过super关键字来调用父类的有参构造函数。
阅读全文