gpt4 book ai didi

java - 为什么在声明子类的对象时会调用父类(super class)的构造函数? ( java )

转载 作者:IT老高 更新时间:2023-10-28 20:54:49 25 4
gpt4 key购买 nike

考虑这段代码:

class Test {
Test() {
System.out.println("In constructor of Superclass");
}

int adds(int n1, int n2) {
return(n1+n2);
}

void print(int sum) {
System.out.println("the sums are " + sum);
}
}


class Test1 extends Test {
Test1(int n1, int n2) {
System.out.println("In constructor of Subclass");
int sum = this.adds(n1,n2);
this.print(sum);
}

public static void main(String[] args) {
Test1 a=new Test1(13,12);
Test c=new Test1(15,14);
}
}

如果我们在父类(super class)中有一个构造函数,它将被我们为子类构造的每个对象调用(例如,对象 aTest1 调用 Test1(int n1, int n2) 及其父 Test())。

为什么会这样?

这个程序的输出是:

In constructor of Superclass

In constructor of Subclass

the sums are 25

In constructor of Superclass

In constructor of Subclass

the sums are 29

最佳答案

因为它将确保在调用构造函数时,它可以依赖于其父类(super class)中正在初始化的所有字段。

参见 here 中的 3.4.4

关于java - 为什么在声明子类的对象时会调用父类(super class)的构造函数? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173019/

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