我有关于类和对象的作业。 阶级是电视,电视对象会有属性,有些是不变的
•制造商。制造商属性将保留品牌名称。一旦电视被创建,这就不会改变,因此将是一个命名常数。
•screenSize。 screenSize属性将保持电视屏幕的大小。这不能改变
我不确定我对常数字段的声明,我无法理解它们将如何保持不变 它们应该是最终的还是最终的 我如何保证一旦创建了对象,值就不会改变
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;
}
答案 0 :(得分:2)
我认为你混淆了一个变量是常量而一个类属性是不可变的。
您的电视对象可能会有不同的制造商和屏幕尺寸,因此您不能使用静态,因为这会使所有实例都相同。
仅对常量使用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";
答案 1 :(得分:2)
由于制造商和屏幕尺寸因电视而异,因此不需要静态关键字。我想你并没有忘记在构造函数参数中提到卷。您的代码将更改为以下内容。
class Television {
private final String manufacturer; // your declaration is correct as per your requirement but the naming convention is wrong final variables use lowerCamelCase instead of UPPERCASE.
private final int screenSize;
private boolean powerOn;
private int channel;
private int volume;
public Television(String manufacturer, int screenSize, int volume) {
this.manufacturer= manufacturer;
this.screenSize= screenSize;
this.volume = volume;
}
}
除非您声明一些通用常量,例如说:
,否则无需使用静态final关键字public static final float pi = 3.14;
,无论对象或其他被称为实例的值都是相同的。
答案 2 :(得分:1)
最终变量有三种形式:
<强> There is no requirement to initialize a final variable at declaration but it must initialize before using it.
强>
<强> You can only initialize a final variable once.
强>
class Program {
/* Class Final Variables*/
//Static means its common for all the objects you are creating like tv1, tv2.....
static final int i1 = 10;
static final int i2;
static {
i2 = 10;
}
/*Instance Final Variables*/
final int i1 = 10;
final int i2;
final int i3;
{
i2 = 10;
}
Program() {
i3 = 10;
}
/*local final variable*/
final int i1 = 10;
final int i2;
i2 = 10;
}
有关更多示例,您可以查看此where-can-final-variables-be-initialized
答案 3 :(得分:0)
您将需要使用最终变量。静态意味着它在实例之外,因此无论对象的状态如何,它对于所有对象应该是相同的。它与类相关联,而不是与对象本身相关联。
每个对象的最终变量可以不同,但只设置一次,不能更改。这就是您正在寻找的内容:private final Object my_instance_final
。