我有一个关于类和对象的作业。 类是电视,电视对象会有属性,有些是常量
• 制造商。制造商属性将包含品牌名称。一旦电视被创建,这就不能改变,所以将是一个命名常量。
• 屏幕尺寸。 screenSize 属性将保存电视屏幕的大小。这不能改变
我不确定我对常量字段的声明,我无法理解它们如何保持不变 他们应该是 static final 还是 final 我如何保证一旦创建了对象,值就不会改变
class Television {
private final String MANUFACTURER;
private final int SCREEN_SIZE;
private boolean powerOn;
private int channel ;
private int volume ;
public Television(String MANUFACTURER, int SCREEN_SIZE) {
this.MANUFACTURER = MANUFACTURER;
this.SCREEN_SIZE = SCREEN_SIZE;
this.volume = volume;
}
最佳答案
我认为您混淆了常量变量和不可变类属性。
- 常量通常是指在整个程序中保持不变的事物。一个很好的例子是 Math.PI,它们被声明为 static + final。
- 不可变的概念是在对象创建后不能更改的属性,这可以使用 final 强制执行,或者简单地声明私有(private)而不提供 setter。
您的 Television 对象可能有不同的制造商和屏幕尺寸,因此您不能使用静态,因为这会使所有实例都相同。
此外,仅对常量使用 CAPITALS_WITH_UNDERSCORES 是标准约定,例如静态 + 最终。
所以我将你的类声明为:
class Television {
private final String manufacturer;
private final int screenSize;
private boolean powerOn;
private int channel;
private int volume;
public Television(String manufacturer, int screenSize) {
this.manufacturer = manufacturer;
this.screenSize = screenSize;
this.volume = volume;
}
}
并可能在其他地方将您的制造商声明为常量
public static final String SONY = "Sony";
public static final String SAMSUNG = "Samsung";
关于java - 静态或静态最终,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779720/