在子类中我们有一个无参构造,在无参构造中,我们又调用了父类的无参构造方法,初始化了父类的特征,将 age 初始化为 0,name 初始化为 null。那么我们在 new 一个Cat类时,该怎么为它分配内存呢。
时间: 2024-09-13 11:02:50 浏览: 39
c++ 子类构造函数初始化及父类构造初始化的使用
当你在子类 `Cat` 中定义了一个无参构造函数,并在这个构造函数内部调用了父类的无参构造函数来初始化父类的属性(如年龄 `age` 设置为0,名字 `name` 设置为null),创建 `Cat` 对象时,实际上是这样的:
```java
// 假设Animal是一个父类,Cat是它的子类
public class Animal {
private int age;
private String name;
// 父类的无参构造函数
public Animal() {
this.age = 0;
this.name = null;
}
}
public class Cat extends Animal {
// 子类的无参构造函数
public Cat() {
super(); // 调用父类的无参构造函数
}
}
// 创建 Cat 实例
Cat myCat = new Cat();
```
当调用 `new Cat()` 时,实际上会首先创建一个新的 `Cat` 类的对象,然后在其内部调用父类 `Animal` 的无参构造函数来完成对父类属性的初始化。这就是 Java 中默认的内存分配过程,即为 `myCat` 分配了一块内存空间,用于存储 `Cat` 类和继承自 `Animal` 类的数据成员。
阅读全文