考慮這個例如:
假設你有一個類SomeClass
,它包含兩個字段String
&的int
public class SomeClass {
String aString;
int someInteger;
...............
}
您可以創建一個構造成每次使用一個Instance
類型SomeClass
已創建。因此,您創建的每個Object
類型SomeClass
您必須使用參數對其進行初始化。最終,它會存在,它的領域現在有值,而不是null
:
public SomeClass(String aString, int someInteger){
this.aString = aString;
this.someInteger = someInteger;
}
此外,還可以創建不接受任何參數/參數(這就是所謂的超載),另一個構造。其結果是,你可以創建這個類的一個實例,並初始化它的屬性或創建它的屬性尚未初始化空對象(所以你分配後創建的對象後,他們通過制定者的值):
public SomeClass(){
// Empty constructor
}
現在考慮可以在創建的對象上調用的setter方法。通過您可以設置/獲取對象屬性/字段的方法。例如,這方法改變aString
字段值:
public void changeTheString(String newString){
aString = newString;
}
您可以創建其他的方法來操作創建的對象的屬性,例如:
public void changeTheInteger(int newInteger){
someInteger = newInteger;
}
public String getTheString(){
return aString;
}
現在讓我們來測試創建數組SomeClass
SomeClass
的對象,請考慮此數組可能有多達3個對象類型SomeClass
:
SomeClass array[] = new SomeClass[3];
現在陣列是EMPTY,但它CAN容納類型SomeClass
的THREE對象。在各項指標(無論您使用的是循環或不),你要添加的對象和初始化這樣的:
for(int i=0; i<3; i++){
array[i] = new SomeClass("Some String", i); // values are for example
}
現在你可以調用時創建的每一個對象的方法指數,例如:
String theString = array[0].getTheString();
System.out.println(theString); //to print it out
// changing the String field for SomeClass Object/Instance at index 1 in the array
array[1].changeTheString("I am changing the String");
// and so on
array[2].changeTheInteger(5);
此行是沒有意義的:'玩家[C] =新HoldEmTurns(玩家[C] .getHuman(),播放器[C] .getName());'你要初始化'玩家[c]',但你也可以在玩家身上調用方法[c]'並假裝它已經被初始化了。 – Tom
@Tom完全是我的問題,我希望它創建該對象,然後一旦構造函數被調用它就被初始化。 –
@JackB如果對象不存在,你希望'getHuman()'和'getName()'返回什麼?一個新初始化的(引用)數組將所有元素都設置爲'null'... – glglgl