1. 程式人生 > >java物件屬性和方法的引用

java物件屬性和方法的引用

物件方法的引用通過物件名.方法名引用。如有以下方法:

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{
String address;
}

假設addr是work的一個屬性,此時我們需要引用address這個屬性,那麼引用方法就是work.addr.address。

現在我們定義了以下兩個類;

class Worker{
String name;
int age;
double salary;
Address addr;
public void work(){}
public void work(int h){}
public Worker(){}
public Worker(String s, int i, double d){
name = s;
age = i; 
salary = d;
}
}
class Address{
String address;
int zipCode;
public Address(){}
public Address(String s, int i){
address = s;
zipCode = 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都是物件,我們不能引用物件中的物件,只能引用物件中的屬性和方法。

因此我們得到一個物件引用的規則:物件只能直接引用他的直接組成部分——屬性和方法。方法內部的組成部分不允許被引用能直接引用屬性內部的組成部分。物件不允許引用物件。