關于類,構造器,實例字段的筆記
源程序中可以包含多個類,或者也可以把每個類分配到單獨的源文件中,
當一個源文件編譯過程中需要調用另外的類,編譯器會自動編譯.
主力類:workhorse class,一般不具備main方法,而是具有自己的實例字段(instance field)和方法(method).
關鍵字public表示任意類中的任一方法都可以調用這個方法.
關鍵字private用來確保訪問實例字段的方法只能是類本身的方法.任何外部方法都無法讀或者寫這些字段.
PS:也可以對實例字段用public關鍵字,但是這是很糟糕的做法,public的數據字段將允許程序任何部分對其訪問和修改,這樣就破壞了封裝.
構造器(constructor)
構造器的名字和類的名字是一樣的.但是同方法的區別子在于:構造器只能和new運算符一起被調用.不能把
構造器用于一個已經存在的對象以重新設置其實例字段.
一個類可以具有多個構造器(這在JAVA類庫中得以完整提現)
構造器可以具有0個或者多個參數
構造器沒有返回值
構造器和new運算符總是一起調用
PS:注意不要在構造器中定義和實例字段一樣的局部變量.
例子:public yangfan(String n,int a)
{
string name = n;
int age = a;
}
private String name;
private int age;
這樣的寫法會在構造器內部遮蔽(shadow)了相同名字的實例字段,以上name,age兩個實例字段將被遮蔽
而且程序出錯的時候也會非常難以發現問題的所在.
關鍵:不要讓自己使用和實例字段同名的變量.
當一個源文件編譯過程中需要調用另外的類,編譯器會自動編譯.
主力類:workhorse class,一般不具備main方法,而是具有自己的實例字段(instance field)和方法(method).
關鍵字public表示任意類中的任一方法都可以調用這個方法.
關鍵字private用來確保訪問實例字段的方法只能是類本身的方法.任何外部方法都無法讀或者寫這些字段.
PS:也可以對實例字段用public關鍵字,但是這是很糟糕的做法,public的數據字段將允許程序任何部分對其訪問和修改,這樣就破壞了封裝.
構造器(constructor)
構造器的名字和類的名字是一樣的.但是同方法的區別子在于:構造器只能和new運算符一起被調用.不能把
構造器用于一個已經存在的對象以重新設置其實例字段.
一個類可以具有多個構造器(這在JAVA類庫中得以完整提現)
構造器可以具有0個或者多個參數
構造器沒有返回值
構造器和new運算符總是一起調用
PS:注意不要在構造器中定義和實例字段一樣的局部變量.
例子:public yangfan(String n,int a)
{
string name = n;
int age = a;
}
private String name;
private int age;
這樣的寫法會在構造器內部遮蔽(shadow)了相同名字的實例字段,以上name,age兩個實例字段將被遮蔽
而且程序出錯的時候也會非常難以發現問題的所在.
關鍵:不要讓自己使用和實例字段同名的變量.