2014-01-05 34 views
-3
public final class Mess { 
Object obj1 ; 
// rest of the codes 
...... 

請向我解釋一下,因爲我是初學者,Object boj1的意義是什麼? 的一些代碼,我發現,針對同一對象「爛攤子」,他們使用,對象數據類型在對象中的含義

mess obj = new mess(); 

我明白這一個,但我十分不知道是什麼類型的變量(或者可能是refrence)做代碼Object obj1創建..,

+0

始終使用Java命名約定,即使在示例中。類在'UpperCamelCase'中。 –

+0

因爲你沒有提供任何細節,你基本上要求我們爲你重寫你的部分教科書,當時大概你已經有了教科書或課程筆記,但是還沒有閱讀足夠的內容。這很粗魯,就像問我們「請免費教我Java」。您至少可以從該代碼中提供更多的上下文,以便我們可以給出與該代碼相關的具體答案,以及它在做什麼,或者詢問您的教科書或課程筆記中的某些您不明白的特定文本;這可能對你更有幫助。 –

+0

我的意思是,這不是一個網站教你基本的Java,還有其他網站和課程,爲此。 –

回答

1

您在Java中創建的所有類(如Mess)都是Object的子類。

當你寫一個類如下:

public final class Mess { 

到Java,這實際上意味着下面的(儘管你不寫extends部分):當你創建一個對象

public final class Mess extends Object { 

使用Mess類:

Mess myMess = new Mess(); 

此對象可以只有MessMess的子類(extends Mess)。它不能是String或任何其他類。

但是當你創建使用Object類的對象:

Object myObj; 

它可以是任何東西,是Object子類:

myObj = new String("I am awesome!"); 
myObj = new Mess(); 

但是,這並不意味着myObj會奇蹟般地成爲StringMess。它仍然是Object,但它指的是String對象或Mess對象。

如果您需要參考myObjStringMess,你將不得不投它明確(因爲,該方案,它只是一個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 
1

Object class是Java中所有類的父類。根據Java繼承語法,父類引用可以保存其任何子類的實例。所以對象類型用於需要保存任何子類型/任何類型的地方。它有很多用法,例如工廠實現。

+0

可能要提到Java中的每個類都是Object的子類。並且通過擴展,'mess' *擴展*'Object',即使它沒有被聲明爲這樣。 – ADTC

+0

@ADTC第一句提到它,不是嗎? –

+0

我知道,但他是個初學者':)' – ADTC

1
Object obj1 ; 

它就像任何其他實例成員可以是一個類型的對象。現在它可以容納任何Object,因爲它的類型是java中所有Classes的超類。

可能是代碼中的其他位置,它們可以將該變量分配給任何類。

Object obj1 = new String(""); 

但它確實聞起來像在設計上的缺陷。

因爲它的類型是Object,所以必須將其轉換爲受尊重的對象類型才能使用它。

相關問題