物件方法的引用通過物件名.方法名引用。如有以下方法:
public void work(){}
public void work(int h){}
物件名是work,那麼物件方法的引用就是work.work(10);
此外,物件方法引用為最後一層,不允許引用物件方法內的組成部分。方法內部定義的變數屬於區域性變數。
物件屬性的引用通過物件名.屬性名引用。如有如下屬性:
string name;
int age;
double salary;
物件名work,那麼物件屬性的引用就是work.name。但是物件屬性可能是另乙個物件,此時我們需要訪問另乙個物件下的某乙個屬性,那麼引用就是物件名.屬性名.屬性名……。如下**:
address addr;
class address
假設addr是work的乙個屬性,此時我們需要引用address這個屬性,那麼引用方法就是work.addr.address。
現在我們定義了以下兩個類;
class worker
public void work(int h){}
public worker(){}
public worker(string s, int i, double d)
}class address
public address(string s, int i)}
現在我們需要建立乙個
worker
物件,物件名為work。那麼我們現在如何對addr進行賦值呢?
無論是方法還是函式都是可以帶引數的,那麼這裡就有乙個問題——引數型別。我們知道類也是一種型別,因此在傳遞引數的時候就可以分為兩類——傳值和傳址。8種基本資料型別都是傳值,類就是傳址。
因此對addr賦值時,
可以在構造方法中傳址賦值。構造方法可以改寫為
public worker(string s, int i, double d,address a)。
但同時需
要注意的是,在傳遞引數的時候,引數必須是已知的,具有明確的儲存空間和數值。就是說傳遞物件位址時,物件必須要被準確地建立。因此在建立work時,要對work.
addr賦值,需要先建立乙個address的物件,我們假設物件名是dress。則傳遞的引數形式應該為public worker("das",3, 3.4,dress).
也可以直接對屬性賦值,即
work.addr = dress;
現在我們已經建立了兩個物件了:dress,work;現在我們需要訪問address屬性,這裡有兩種方法:
1、dress.address
2、work.addr.address
但是我們不能這樣引用:work.dress.address或者work.address,這樣的引用方法會編譯報錯。這裡dress,work都是物件,我們不能引用物件中的物件,只能引用物件中的屬性和方法。
因此我們得到乙個物件引用的規則:物件只能直接引用他的直接組成部分——屬性和方法。
方法內部的組成部分不允許被引用,不
能直接引用屬性內部的組成部分。物件不允許引用物件。
Java 物件和物件引用
為了接下來進行更好的分析,我先建立乙個demo類,用於後面的分析。public class demo 接下來,我們用demo類來建立乙個物件。demo demo newdemo 這一條語句,其實包括了四個動作 1 右邊的 new demo 是以demo類為模板,在堆空間裡建立乙個demo物件。2 末...
JAVA物件引用
等於運算子可以使用任意類到的運算元。基本資料型別的值可以比較。如果運算元同是 其它的物件型別 比如使用者建立的類 那麼計算結果取決於運算元是否引用相同的物件。考 慮 下下面的例子 string1 string2 在這個例子中,string1和string2必須引用同乙個字串而不是兩個不同的字串,即使...
Java自學 類和物件 引用
引用的概念,如果乙個變數的型別是 類型別,而非基本型別,那麼該變數又叫做引用。步驟 1 引用和指向 new hero 代表建立了乙個hero物件 但是也僅僅是建立了乙個物件,沒有辦法訪問它 為了訪問這個物件,會使用引用來代表這個物件 hero h new hero h這個變數是hero型別,又叫做引...