gpt4 book ai didi

java - java构造函数初始化的思考

转载 作者:行者123 更新时间:2023-12-01 15:07:40 24 4
gpt4 key购买 nike

我在 Bruce Eckel 的 Thinking In Java 第 4 版的第 128 页,第二段,最后一句中提出了一个问题:

what would happen if an overloaded constructor were defined that did not initialize w3 and there wasn’t a “default” initialization for w3 in its definition?

我发现这个说法令人费解,这本书的专家或读者可以帮助我吗?谢谢!

最佳答案

窗口 w3 = 新窗口(3);

它只是保护是否有人没有在重载构造函数中正确初始化 w3 。此类字段实例化会自动放置在每个构造函数的开头。因此,即使是重载的也会收到 w3 初始化。

如果您仅声明 Window w3,则在执行重载构造函数时,w3 将保持 null

这是书中的代码:

import static net.mindview.util.Print.*;
// When the constructor is called to create a
// Window object, you’ll see a message:
class Window {
Window(int marker)
{
print("Window(" + marker + ")");
}
}

class House {
Window w1 = new Window(1);
// Before constructor
House() {
// Show that we’re in the constructor:
print("House()");
w3 = new Window(33); // Reinitialize w3
}
Window w2 = new Window(2);
// After constructor void f() { print("f()"); }
Window w3 = new Window(3);
// At end
}

关于java - java构造函数初始化的思考,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759684/

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