java - 是否需要调用构造函数将变量初始化为默认值?

标签 java initialization

我尝试浏览几乎所有关于变量初始化的文章,但我仍然不明白有关它的一些事情。我不清楚我们是否必须调用构造函数来将实例变量初始化为默认值,或者它可以在不调用构造函数的情况下发生?例如,约定的是我们用Java编写的每个类都会在其构造函数中调用父类(super class)的构造函数来“初始化父类(super class)的变量”。它究竟意味着什么?我们是否必须调用父类(super class)构造函数来将父类(super class)的实例变量初始化为默认值?或者即使没有调用父类(super class)构造函数实例变量也有默认值,而我们这样做是为了向它们传递构造函数中描述的值或在声明期间给出的值?第二件事是,我们可以通过几种方式初始化变量,通过不给它们一个值(它们将被设置为默认值),在声明中给出值,例如:

private int number = 10;

或在构造函数中指定值。对我来说很清楚,我们必须调用构造函数来将变量初始化为构造函数中指定的值,但是其他两个示例又如何呢?我们是否还必须调用构造函数来将实例变量初始化为这些值?有人也可以给我一个用简单的话创建这个的命令吗?我知道这里有很多关于对象实例化和初始化顺序的文章,我已经阅读了它们,但我仍然不明白那里的很多东西。 告诉我我是否错了,但据我了解,问题的答案是我们必须调用父类(super class)构造函数将父类(super class)字段初始化为其默认值,因为否则就没有必要进行调用如果父类(super class)的实例变量已经用默认值初始化而不调用构造函数,则父类(super class)构造函数是必需的 - 因为我们不必担心我们的变量未初始化(如果它们是 - 使用默认值)。

@编辑:需要明确的是,我的主要问题是: 实例变量何时获得默认值?在构造函数中还是在构造函数之前?是否必须调用构造函数来初始化实例变量,或者甚至在构造函数调用之前就分配默认值?

最佳答案

在面向对象的编程语言中,“对象”起着关键作用。所以,启动该对象是必须的。我无法完全明白你在问什么。我是根据我的知识告诉的。

您必须实例化一个类才能使用其字段和方法。为此,您将这样分配

Class_Name object = new Class_Name();

无论您是否在调用类中创建默认构造函数,它都会创建一个默认构造函数,这是没有问题的。

但是,一旦您创建了带有参数的构造函数,您就必须创建一个默认构造函数来启动上面的对象。

您可以按照您的描述并通过参数化构造函数为类中的变量赋值。最好写一个私有(private)修饰符来初始化一个变量(这里有封装概念)。

您可以通过在构造函数中传递参数来更改实例化变量的值。

如果您没有为变量设置任何值。编译器会为此设置一个默认值。 看看这篇文章 https://www.javaworld.com/article/2076614/core-java/object-initialization-in-java.html

关于java - 是否需要调用构造函数将变量初始化为默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114074/

相关文章:

Java:我的代码显示为文本文件......而不是 java 格式

java - 我将如何去做这件事——也许是进程树?

java - 为什么使用 set = map.entryset(); 时不必初始化集合?

javascript - 复选框初始化(具体化)

c++ - 字符串数组到字符串类型 vector 的转换

java - 为什么我的 boolean 值总是 true?

java - chalice 或玩!对于前 RoR 开发人员?

c++ - 为什么 x86-64 C/C++ 编译器没有为此代码生成更高效的汇编?

Python `__init__.py` 和代码中对象的初始化

java - 根据日期时间对对象的数组列表进行排序