Java中關于構造方法:
1.構造方法的方法名稱必須與類名稱相同
2.構造方法必須是public修飾(以後Java進階程式設計中會出現private修飾的構造方法)
3.構造方法定義時不能存在傳回值類型的說明
4.構造方法是在new的時候被調用的,也僅僅在new的時候調用
構造方法除了在new的時候調用,且是被JVM自動調用之外,在任何情況下都不能把構造方法當成普通方法加以調用
5.構造方法的調用是為了實作對類中成員的初始化(賦初值)。
6.若在類中無構造方法,Java會自動産生一個無參的構造方法。
方法的重載:
Java允許定義同名的方法,且滿足如下要求:
1.方法名稱完全相同
2.方法的參數不同(個數不同或者類型不同)
3.同名方法,若參數個數和類型相同,僅僅是傳回值類型不同 ,這不能稱為“方法的重載”。
一個類的加載過程:

當出現AboutThis即類名稱時,所有方法和靜态成員将調入記憶體形成一個空間;每次進行new時隻對非靜态成員申請空間,兩次申請即為兩個不同的空間。
關于this:
1、this的出現,是為了解決形參(局部變量)名稱與類成員名稱的沖突問題的;(避免二義性)
2、在聲明類時,this是一個“待定系數”,即,其在聲明時,值是不确定的;
3、在引用語句中,this被“.”運算符左側的對象名稱所替代(對象名稱實質上是指向本執行個體的指針);
4、this()使用方法解釋:()是函數(方法)的辨別,或者說,”使用者辨別符(…)”是對相關方法的調用;this()是對構造方法的調用;this(…)所調用的是參數比對的相關構造方法(被重載的構造方法);若構造方法中出現this(…),則,該語句必須是這個構造方法中的第一條有效語句。(自然而然的說,this()隻能出現在構造方法中。)
關于final:
final是“最終”的意思。可以修飾class、修飾方法、修飾成員……
final的本質含義是:隻讀;
final的特點:
1)若定義一個static修飾的final類型的空間(隻讀空間),則,該空間(變量)必須賦初值;
2)若定義一個沒有static修飾的final類型空間(隻讀空間),且不賦初值,則,Java要求在構造方法中必須實作對該空間的指派。
關于static:
1)由于方法的本質是代碼段,作業系統禁止更改代碼段,是以,同一個類的不同執行個體,共用一份代碼段;
2)同一個類的不同執行個體的各自非靜态成員應該互相獨立,不互相幹擾,是以,非靜态資料成員應該每一份執行個體,單獨申請各自空間。
在類名稱第一次出現時,該類中,除了非靜态成員外,其它所有的靜态成員、靜态方法和非靜态方法都已經調入記憶體(在代碼段和資料段中);非靜态成員隻有在new的時候,再在系統堆中申請空間。
而有static修飾的成員(和方法),是所有該類的執行個體都隻申請單獨一份該成員的空間;即,所有該類的執行個體都共同享有static修飾的資料成員!也就是說,更改一個執行個體的static成員,就等于更改了所有執行個體的這個成員的值!因為其實這個成員隻有一份!大家共享!
帶有static修飾的成員(方法)是在該類第一次在代碼中出現的時候申請其空間的!
比如:
Point p1;
上述代碼并沒有對Point類進行執行個體化,但是,其所有的static資料成員和方法成員都已經“加載”了!并且,以後這些成員和方法不再另外申請空間!
如果一個方法是static類型的,則,該方法無需執行個體化就可以被調用;而在這時是不存在非靜态成員的,是以,如果方法中存在對非靜态成員的引用,這是錯誤的!
結論:靜态方法不能引用任何非靜态構件(包括成員、方法、類)
局部變量(包括形參變量)在堆棧中申請空間;非靜态成員隻能在new之後在系統堆中申請空間
靜态方非靜态方法在代碼段中,靜态成員在資料段中。
非靜态方法隻能通過對象.方法名稱調用;而靜态方法一般通過類名稱
繼承
對于繼承,首先限制繼承的範圍(權利):public、protected、private
public可以任意繼承、引用;
protected可以被繼承;隻能在同一個包内被引用;
private既不能被繼承,也不能在“定義private成員(方法)的類”的{}之外被引用。
子類(派生類)能夠繼承基類(父類、超類)的所有非private的成員和方法。
注意:不能多重繼承
final與繼承的關系
在類中,若成員被修飾為final,則,該成員被稱為“常量變量”,或說:隻讀變量(隻讀空間)。
若在類的定義中出現final修飾,則,意味着該類不能作為基類産生派生類,即,不可繼承。
若在方法的定義中出現final修飾,則,意味着該方法不能被派生類所覆寫!
關于finalize()方法:
Java的對象必須先new,即申請空間,但是,不需要像C那樣顯式的通過free()函數回收所配置設定的空間,因為,Java存在“垃圾回收機制,即,gc”。但是,在相關對象空間回收前,Java會自動執行finalize()方法。預設情況下,finalize()方法不執行任何操作。如果覆寫這個方法,那麼,就會在對象被回收前執行相關代碼(通常用于回收非記憶體資源,如網絡資源、檔案資源等)。
在有繼承關系的類中,葉子類(就是最底層的子類)對象在回收前,會按照先執行本類finalize()方法,再執行父類finalize()方法,再執行祖先類finalize()方法,……,如是,直到執行完Object這個最祖先類的finalize()方法。
可見,finalize()方法的執行順序與構造方法的執行順序,正好相反!
抽象類、抽象方法
隻聲明而未定義的方法,需要跟上abstrac修飾,形成“抽象方法”,抽象方法是不能被調用的;
包含着至少一個抽象方法的類,是不完整的類,稱為“抽象類”,抽象類不能直接執行個體化。
抽象類可以作為基類派生其他類;抽象類的派生類若覆寫其所有的抽象方法,則派生類是普通類,否則依然是抽象類。
抽象類執行個體化方法:
1.以抽象類為基類派生出普通類,即在派生類中實作其所有抽象方法,再以普通類為類型執行個體化對象;
2.在用抽象類執行個體化對象的過程中直接實作其所有的抽象方法。
接口
關鍵字:interface
接口的成員擁有聯合屬性聲明:public static final
接口的方法擁有聯合屬性聲明:public abstract
是以接口不能直接執行個體化。
對于接口的應用有兩種方式:
第一種接口的實作(implements):
通過類“實作”接口,即使用implements關鍵字實作
第二種接口的實作:
在對接口進行對象的執行個體化的同時實作其未實作的抽象方法(這會産生匿名内部類)
注意:實作了接口的類的對象一定是這個接口的執行個體;類可以實作多個接口;接口内不能有構造方法;