gpt4 book ai didi

java - 类的字段和实例的基本 Java/OOP 不确定性

转载 作者:行者123 更新时间:2023-12-02 11:12:15 25 4
gpt4 key购买 nike

在类中,您可以在其中创建字段,如以下示例中的 int bar 。

Class foo{
int bar;
foo(int bar){
bar = bar;
}

int getBar() {
return bar;
}

void setBar(int bar) {
bar = bar;
}
}
  1. 每次我在另一个类中创建一个新的 foo 对象时,该特定对象(foo 的实例)是否会有一个 bar 属性,当使用 setBar() 更改该属性时,只会影响该实例而不影响其他实例?

  2. 我经常看到人们为上面示例中的 bar 等属性创建 getter 和 setter。如果我觉得懒,只是为了自己/好玩而编写代码,我可以通过访问属性 FooInstance1.bar = 22; 来修改此类任何实例的 bar 属性,而不必这样做写一个setter会和问题1有同样的效果(只是改变了实例)?

  3. Java 编译器如何知道什么方法是构造函数?事实上它与类具有相同的名称?或者由于没有在函数头中指定返回值这一事实?也许编译器认为构造函数是什么并不重要(常规函数之间没有语法差异),它可能只是人们用来区分函数含义的语义。

编辑:我很难选择最佳答案。我从每个人身上都学到了新的东西。谢谢!

最佳答案

1) 是的。没错。

2) 是的,可以,但最佳实践是使用 getter 和 setter。这样,类的作者就可以为属性编写特殊的逻辑,确保在获取或设置时执行。例如,某些属性可能会即时计算,或者在属性更改时向监听器发送通知。

3) 构造函数是没有返回值且与类同名的方法。可以有任意数量的构造函数,但每个构造函数都必须具有唯一的参数类型组合。

关于java - 类的字段和实例的基本 Java/OOP 不确定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694908/

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