gpt4 book ai didi

java - 在 Java 中实例化对象时到底会发生什么?

转载 作者:行者123 更新时间:2023-12-01 06:32:58 25 4
gpt4 key购买 nike

我知道在创建类的对象时,构造函数会构建该对象。假设我有这两门课:

class Vehicle {
public int a = func();

public int func() {
System.out.println("9");
return 9;
}
}

class Car extends Vehicle {

public static void main(String[] args) {
Car c = new Car();
}
}

该项目的输出是“9”。但为什么会发生这种情况呢?调用 Car 构造函数时到底会发生什么?我知道有某种类型的默认构造函数,但我不确定它到底是如何工作的。

谁能用上面的例子解释一下对象的构造吗?

最佳答案

编译器提供了default constructor对于 Car 来说,这实际上是:

Car() {
super();
}

同样,Vehicle 作为默认构造函数:

Vehicle() {
super();
}

字段在调用父类(super class)构造函数之后作为初始化的一部分进行初始化。所以就好像 Vehicle 类实际上是这样编写的:

class Vehicle {
public int a;

Vehicle() {
super();
a = func();
}

public int func() {
System.out.println("9");
return 9;
}
}

现在这有意义吗?

参见section 15.9.4 of the Java language specification以获得更详细的描述。

关于java - 在 Java 中实例化对象时到底会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com