Java面向對象學習筆記(二)

5、 處理對象的通用方法ide

  1. toString方法。全部的類都從Object中繼承了這個方法。當打印對象時,其實是在調用該方法。另外,當對象和字符串相連時,也會自動調用該方法。經過重寫自定義。 函數

  2. equals方法。這個方法用於比較引用類型是否引用的是同一個對象,能夠經過重寫自定義。 this

 

6、 final修飾符 spa

  1. final修飾變量時,表示該變量一旦得到了初始值後就不可改變。 設計

對於final修飾的成員變量,因爲成員變量的初始值能夠被系統默認賦初值,也能夠由構造器或者構造塊賦初值,所以,一旦初始化後,就不能在普通方法中對成員變量從新賦值了。final成員變量必須顯式初始化系統不會對其進行隱式的賦值。 對象

對於final修飾的局部變量,既能夠在定義時也能夠不在定義時指定默認值,後者狀況能夠在後面代碼中指定初始值,但只能一次。 繼承

對於final修飾的引用類型變量,final只保證這個引用所引用的地址不會改變,即一直引用同一對象,但這個對象徹底能夠發生改變。 接口

  2. final修飾的方法不可被重寫。 字符串

  3. final修飾的類不可有子類。 it

 

7、 抽象類

  1. 能夠包含抽象方法的類是抽象類,經過abstract關鍵字聲明。抽象類不能被實例化,即便其中不包含抽象方法。抽象類能夠包含類的各類成員,其構造器不能用於建立實例,主要是用於被子類調用。

  2. 抽象類與普通類的差異在於,能夠包含抽象方法,不能夠被初始化。 

  3. 抽象類被當作父類被其餘子類繼承。它是從多個具體類中抽象出來的父類,做爲其子類的模板,避免子類設計的隨意性,體現了模板模式的設計。

 

8、 接口

  1. 接口定義的是多個類共同的公共行爲規範,其中定義了一組抽象方法做爲共用方法。使用interface關鍵字聲明。

  2. 一個接口能夠有多個直接父接口,但接口只能繼承接口,不能繼承類。

  3. 接口的定義只是一種規範,不能包含構造器和初始化塊定義。接口中包括常量屬性,抽象方法,內部類(接口)和枚舉類定義。需指定爲public訪問控制修飾符。

  4. 接口裏的常量屬性是接口相關的,系統會自動指定其爲public static final,並在定義時指定初值。接口裏的方法默認使用public abstract,接口裏的內部類和枚舉類默認採用public static

  5. 接口能夠多重繼承,多個父接口採用逗號隔開。

  6. 接口不能用於建立實例,但接口能夠用於聲明引用類型的變量。一個類能夠實現多個接口。實現類必須實現所有抽象方法,不然該類須保留該抽象方法並聲明爲抽象類。

 

9、 內部類

  1. 在一個類的內部再定義的類叫作內部類。能夠定義在一個類中的任何位置,包括方法體中(局部內部類)。內部類提供了更好的封裝,能夠把其細節隱藏在外部內以內而不容許包中的其餘類訪問。

  2. 內部類的成員能夠直接訪問外部類的私有成員,而外部類成員不容許訪問內部類的成員。

  3. 外部類使用內部類的細節時,須要實例化內部類的對象,而後使用其中的屬性細節。可是對於內部類,能夠直接使用外部類的成員屬性,調用其方法。由於在非靜態類內部類中,保存了一個它所寄存的外部類對象的引用。

  4. 變量的查找順序爲:內部類方法體、內部類中,外部類中。若重名,則this表示內部類對象,外部類名.this表示外部類。

  5. 靜態內部類(static)將內部類相關於外部類。靜態內部類中定義的實例方法不能訪問外部類中實例屬性。

  6. 容許在接口中定義內部類,且其中定義的內部類只能是public訪問權限的靜態內部類。

  7. 在外部類之外的地方訪問內部類,則內部類不能使用private訪問權限。聲明內部類對象須要寫明類全名:外部類名.內部類名 內部類對象名。若是有包名,還須要寫明包名。在外部類之外建立實例時,必須先建立其外部類的對象。語法格式以下:OuterInstance.new InnerConstructor()

  8. 對於繼承了非靜態內部類的子類,須要在其構造函數中顯式調用父類的構造函數,並傳入其父類寄存於外部類的對象引用。

  9. 靜態內部類對象在初始化時,使用外部類直接調用內部類的構造方法。

  10. 定義在方法體中的類稱爲局部內部類,僅在方法中有效。它既不能在外部類之外的地方使用,也不能使用static修飾。對於其子類的定義,在定義在方法體中。

  11. 建立匿名內部類時會當即建立一個該類的實例,而後這個類的定義會當即消失,不能重複使用,必須實現一個接口或者一個父類。它不能顯式建立構造器,但能夠建立初始化塊。

相關文章
相關標籤/搜索