Java 使用getter方法在构造函数中初始化的变量
我正在努力自学Java,我正在制作一个大家都知道的游戏,这是一种垄断 我一直在寻找我的答案,但找不到,所以就在这里 我有一个类Java 使用getter方法在构造函数中初始化的变量,java,netbeans,getter,Java,Netbeans,Getter,我正在努力自学Java,我正在制作一个大家都知道的游戏,这是一种垄断 我一直在寻找我的答案,但找不到,所以就在这里 我有一个类Field,它有两个变量fieldnumber和fieldname。我的想法是创建一个带有数字的字段,以便程序知道玩家在哪里(现在不相关)。 程序为字段创建字段和名称后,字段名和字段号仅应可读(表示不可编辑) 我需要知道如何将这两个变量初始化为构造函数,并使变量仅为“getters”,以便以后不能更改它们 (obs:类字段只是一个子类,稍后我需要使用主类中的数据) 我有点
Field
,它有两个变量fieldnumber
和fieldname
。我的想法是创建一个带有数字的字段,以便程序知道玩家在哪里(现在不相关)。
程序为字段创建字段和名称后,字段名
和字段号
仅应可读(表示不可编辑)
我需要知道如何将这两个变量初始化为构造函数,并使变量仅为“getters”,以便以后不能更改它们
(obs:类字段
只是一个子类,稍后我需要使用主类中的数据)
我有点困惑,试图阅读我正在使用的书,但没有运气 声明字段
final
,在构造函数中分配它们,不要编写setter
如果属性的数量增加,您可以考虑使用以避免具有多个参数的构造函数。
class Field {
private final int fieldNumber;
private final String fieldName;
public Field(final int fieldNumber, final String fieldName) {
// you may validate the values here and throw exception in case of non-valid values
this.fieldNumber = fieldNumber;
this.fieldName = fieldName;
}
public int getFieldNumber() {
return fieldNumber;
}
public String getFieldName() {
return fieldName;
}
}
声明字段
final
,在构造函数中分配它们,不要编写setter
如果属性的数量增加,您可以考虑使用以避免具有多个参数的构造函数。
class Field {
private final int fieldNumber;
private final String fieldName;
public Field(final int fieldNumber, final String fieldName) {
// you may validate the values here and throw exception in case of non-valid values
this.fieldNumber = fieldNumber;
this.fieldName = fieldName;
}
public int getFieldNumber() {
return fieldNumber;
}
public String getFieldName() {
return fieldName;
}
}
- “getter”是返回字段值的方法李>
- “setter”是一种通常只接受一个参数的方法,用于设置字段的值(可能在一些验证之后)李>
- 为了实现良好的封装,通常只能在上下文允许的最大范围内访问实例字段(通常是带有getter/setter的
字段,有时是private
或需要继承或更复杂设置时的package protected字段)protected
- 标有
非访问修饰符的字段只能分配一次final
final
,并在构造函数或实例语句中分配它们(无setter)
如果它们没有绑定到实例,而是绑定到类,那么您可以将它们标记为常量(static final
)并立即分配它们(如果它们是不可变的,那么您可以安全地将它们设置为公共的,即String
s或原语)- “getter”是返回字段值的方法李>
- “setter”是一种通常只接受一个参数的方法,用于设置字段的值(可能在一些验证之后)李>
- 为了实现良好的封装,通常只能在上下文允许的最大范围内访问实例字段(通常是带有getter/setter的
字段,有时是private
或需要继承或更复杂设置时的package protected字段)protected
- 标有
非访问修饰符的字段只能分配一次final
final
,并在构造函数或实例语句中分配它们(无setter)
如果它们没有绑定到实例,而是绑定到类,那么您可以将它们标记为常量(
static final
)并立即分配它们(如果它们是不可变的,那么您可以安全地将它们设置为公共的,即String
s或原语)我建议将这两个属性设置为private(不可访问),在创建实例时初始化它们,您可以使用getter获取它们的值:
class Field{
private String fieldname;
private int fieldnumber;
public Field (String fieldname, int fieldnumber)
{
this.fieldname = fieldname;
this.fieldnumber= fieldnumber;
}
public String getFieldname(){
return fieldname;
}
public int getFieldnumber(){
return fieldnumber;
}
public String toString(){
return fieldnumber+ " " +fieldname;
}
public boolean equals(Object obj){
Field field = (Field) obj;
return (fieldnumber == field.fieldnumber && fieldname.equals(field.fieldname);
}
}
我建议将这两个属性设置为private(不可访问),在创建实例时初始化它们,您可以使用getter获取它们的值:
class Field{
private String fieldname;
private int fieldnumber;
public Field (String fieldname, int fieldnumber)
{
this.fieldname = fieldname;
this.fieldnumber= fieldnumber;
}
public String getFieldname(){
return fieldname;
}
public int getFieldnumber(){
return fieldnumber;
}
public String toString(){
return fieldnumber+ " " +fieldname;
}
public boolean equals(Object obj){
Field field = (Field) obj;
return (fieldnumber == field.fieldnumber && fieldname.equals(field.fieldname);
}
}
Getter表示返回对象存储的值的方法。变量作为getter并不意味着什么。getter通常用于获取声明为私有的变量;也就是说,从类外部看不到的变量。请参见示例:
class Example {
private int value;
public Example(int valueToBeSet) {
this.value = valueToBeSet;
}
}
在上面的示例中,变量值仅在类示例中可见;任何其他类都无法获取该变量。当您希望没有其他类能够更改其值时,这非常有用。但是,要从对象获取值,请使用getter:
class Example {
private int value;
public Example(int valueToBeSet) {
this.value = valueToBeSet;
}
public int getValue() {
return this.value;
}
}
这里的方法getValue()是一个getter。无法更改该值,因为它是私有的,但可以调用方法getValue(),并获取该值,因为该方法是公共的
另一种分配变量值的方法是使用final关键字,即可以获取变量值,但不能更改变量值:
class Example {
public final int value;
public Example(int valueToBeSet) {
this.value = valueToBeSet;
}
}
这样,变量的值只能在构造函数中设置一次,而不能再次设置。但是,您仍然可以从类外部获取该值,因为它是公共的。这通常是一种很好的做事方式,但也有其缺点;也就是说,正如我所解释的,你不能再改变这个值了,要得到一个具有不同值的对象,你必须创建一个新的对象。这是最接近“getter变量”的方法。getter表示返回对象存储的值的方法。变量作为getter并不意味着什么。getter通常用于获取声明为私有的变量;也就是说,从类外部看不到的变量。请参见示例:
class Example {
private int value;
public Example(int valueToBeSet) {
this.value = valueToBeSet;
}
}
在上面的示例中,变量值仅在类示例中可见;任何其他类都无法获取该变量。当您希望没有其他类能够更改其值时,这非常有用。但是,要从对象获取值,请使用getter:
class Example {
private int value;
public Example(int valueToBeSet) {
this.value = valueToBeSet;
}
public int getValue() {
return this.value;
}
}
这里的方法getValue()是一个getter。无法更改该值,因为它是私有的,