public final class Mess {
Object obj1 ;
// rest of the codes
......
請向我解釋一下,因爲我是初學者,Object boj1的意義是什麼? 的一些代碼,我發現,針對同一對象「爛攤子」,他們使用,對象數據類型在對象中的含義
mess obj = new mess();
我明白這一個,但我十分不知道是什麼類型的變量(或者可能是refrence)做代碼Object obj1
創建..,
public final class Mess {
Object obj1 ;
// rest of the codes
......
請向我解釋一下,因爲我是初學者,Object boj1的意義是什麼? 的一些代碼,我發現,針對同一對象「爛攤子」,他們使用,對象數據類型在對象中的含義
mess obj = new mess();
我明白這一個,但我十分不知道是什麼類型的變量(或者可能是refrence)做代碼Object obj1
創建..,
您在Java中創建的所有類(如Mess
)都是Object
的子類。
當你寫一個類如下:
public final class Mess {
到Java,這實際上意味着下面的(儘管你不寫extends
部分):當你創建一個對象
public final class Mess extends Object {
使用Mess
類:
Mess myMess = new Mess();
此對象可以只有Mess
或Mess
的子類(extends Mess
)。它不能是String
或任何其他類。
但是當你創建使用Object
類的對象:
Object myObj;
它可以是任何東西,是Object
子類:
myObj = new String("I am awesome!");
myObj = new Mess();
但是,這並不意味着myObj
會奇蹟般地成爲String
或Mess
。它仍然是Object
,但它指的是String
對象或Mess
對象。
如果您需要參考myObj
爲String
或Mess
,你將不得不投它明確(因爲,該方案,它只是一個Object
):
myObj = new String("I am awesome!");
myObj.toString(); //OK, it calls Object.toString
//myObj.substring(5, 12); //** COMPILE ERROR, there is no Object.substring
String myString = (String)myObj;
myString.substring(5, 12); //OK, it calls String.substring
myObj = new Mess();
//myObj.cleanItUp(); //** COMPILE ERROR, there is no Object.cleanItUp
Mess myMess = (Mess)myObj;
myMess.cleanItUp(); //OK, it calls Mess.cleanItUp
myString = (String)myObj; //** RUNTIME ERROR, myObj is not a String
您可能還像這樣拋出:
myObj = new String("I am awesome!");
myObj.toString(); //OK, it calls Object.toString
//myObj.substring(5, 12); //** COMPILE ERROR, there is no Object.substring
((String)myObj).substring(5, 12); //OK, it calls String.substring
myObj = new Mess();
//myObj.cleanItUp(); //** COMPILE ERROR, there is no Object.cleanItUp
((Mess)myObj).cleanItUp(); //OK, it calls Mess.cleanItUp
((String)myObj).substring(5, 12); //** RUNTIME ERROR, myObj is not a String
Object obj1 ;
它就像任何其他實例成員可以是一個類型的對象。現在它可以容納任何Object,因爲它的類型是java中所有Classes的超類。
可能是代碼中的其他位置,它們可以將該變量分配給任何類。
前
Object obj1 = new String("");
但它確實聞起來像在設計上的缺陷。
因爲它的類型是Object,所以必須將其轉換爲受尊重的對象類型才能使用它。
始終使用Java命名約定,即使在示例中。類在'UpperCamelCase'中。 –
因爲你沒有提供任何細節,你基本上要求我們爲你重寫你的部分教科書,當時大概你已經有了教科書或課程筆記,但是還沒有閱讀足夠的內容。這很粗魯,就像問我們「請免費教我Java」。您至少可以從該代碼中提供更多的上下文,以便我們可以給出與該代碼相關的具體答案,以及它在做什麼,或者詢問您的教科書或課程筆記中的某些您不明白的特定文本;這可能對你更有幫助。 –
我的意思是,這不是一個網站教你基本的Java,還有其他網站和課程,爲此。 –