gpt4 book ai didi

java - 父类(super class)构造函数实际上指的是什么?类或该类的对象(或两者都不是?)

转载 作者:行者123 更新时间:2023-11-30 08:38:45 25 4
gpt4 key购买 nike

我敢肯定这会变成一个愚蠢的问题,但是有人可以告诉我,在 Java 中(尽管我确信这一定与其他语言有一定的相关性),父类(super class)构造函数实际上在做什么?

假设我有一个带有构造函数的父类,该构造函数根据提供给构造函数的参数设置一个变量(不一定是静态变量),然后我在子类的构造函数中调用父类(super class)构造函数。如果我从来没有实例化过父类(虽然我有的话也是一样),那么父类(super class)构造函数实际上指的是什么(类本身或它的一个不存在的对象?),以及它所在的变量在哪里set 居然已经设置了?如果父类(super class)构造函数能够更改非静态变量,那么它肯定是其他东西吗?如果它改变了一个非静态变量,但该类从未被实例化,那么该变量的值会发生什么变化?如何访问它等等?

抱歉,如果这很难理解,但希望有人能解释一下吗?再说一次,我确信这会变成一个愚蠢的问题。

谢谢

最佳答案

当构造函数运行时,对象的一个​​实例已经被分配,但它还没有被正确初始化(毕竟这是构造函数的工作)。

因此,在构造函数中,您确实可以访问当前实例 (this),但在构造函数完成之前,请小心处理。

这可能会成为一个问题,例如,如果 constructor calls into non-final methods (稍后可能会被覆盖)。

类似地,super 将引用父类(super class)实例(并且 Java 确保您在构造函数中做的第一件事是调用其中一个 super 构造函数,因此一旦您自己的构造函数代码开始,继承的字段就会全部初始化)。

如果您的父类需要将参数传递给构造函数,那么所有子类构造函数都必须在代码的第一行提供该参数。编译器不会接受未能这样做的子类。

关于java - 父类(super class)构造函数实际上指的是什么?类或该类的对象(或两者都不是?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415851/

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