Java面向對象總結

類之間的關係
關聯關係、繼承關係、聚合關係、實現關係、多態關係

JAVA類的定義
成員變量+構造函數+封裝方法
成員變量會被默認初始化,局部變量不會默認初始化
變量有四類八種和引用類型(byte,short,int,long,char,float,double,boolean)
編譯器默認整數爲int,浮點數爲double。
Internet默認爲0,double默認爲0.0,boolean默認爲false,char默認爲空格。


構造函數
創建對象時,初始化該對象的成員變量。如果自己不寫,系統自動提供空構造。構造方法與類名同名,沒有返回值,權限自定(權限不同,適用範圍不同,要注意繼承和多態時構造方法可能會因此出錯)。


This關鍵字
指向當前對象的引用,由JVM維護。一般在類內部使用。


static關鍵字
static聲明的成員變量是靜態成員變量,它爲該類公用變量,第一次使用時被初始化,所有的該類對象使用同一個。
static聲明的類,
static聲明的代碼塊,在類被加載時自動執行,且只執行一次。
非靜態塊(匿名塊)只有在實例化類的對象時才調用,且在構造函數前調用,每實例化一個對象調用一次。 
static還能靜態導入(improt static),導入的是某個類的靜態方法和靜態方法。


package和import語句
打包機制,以防類重名的問題。package語句作爲第一條源代碼,import在其他包裏引入某一包,使用其包內的類的成員和方法(有修飾權限決定是否能使用)。


訪問控制權限
四種控制權限,由小到大爲private(類內部)、default (默認)(類內部 包內)、protected(類內部 包內 子類)、public(所有地方)


方法的重載
一個類中定義有相同的名字,參數類表不同(類型、數量),調用時由編譯器決定,這樣的方法構成重載,重載的函數的返回值類型與重載無關,返回值不同不能構成重載。重載的實現技術是符號毀壞(沿用c++),就是給同名的方法重新命名(例如:方法名+參數個數)這樣方法名就唯一。


類的繼承
JAVA只支持單繼承,若要繼承多個對象,需要實現接口。繼承後需要考慮父類的成員和方法修飾權限。 子類實例化時,可以使用this和super關鍵字來調用其他函數(父類、子類的)。


方法的重寫
同名同參同返回且訪問權限不能比父類的訪問修飾權限更嚴格。(3同一權限)重寫的技術是動態派發,動態派發的處理,需要專門開闢出一塊內存區域存放方法,由JVM負責維護。


super關鍵字
super關鍵字用來引用父類的成員和方法,能否引用成功需要權限判定。構造函數中super必須在第一條語句(其他函數不限)。


多態
動態綁定,編譯期間不用判斷引用的實際類型,運行期間具體決定調用那個類的方法。(對系統可擴充性十分重要)
一般實現步驟:子類繼承父類(接口),子類重寫父類某一方法,用父類引用指代子類對象(向下轉型)調用函數,運行期間JVM會判斷對應的子類對象,從而調用對應的方法。


抽象類
抽象類需要用abstract修飾,含有抽象方法的類(不是所有方法)必須聲明爲抽象類,抽象類不一定含有抽象方法,抽象方法必須重寫,抽象類不能實例化,抽象方法只需聲明,不用實現。


接口
Internet修飾的類叫接口,接口是一個特殊的抽象類,所有方法都是抽象方法,不能定義成員變量。抽象方法可以不用abstract修飾。注意,接口中可以定義常量(需要賦值)——{static final 類型 常量名=值}。接口中的常量和方法都是public權限的,也只能使public權限(未定義默認public)。
接口的實現使用implements,接口可以相互繼承接口,也能被類實現,被類實現時必須重寫接口的所有方法。


final關鍵字
final修飾的變量不能修改,final修飾的方法不能被重寫(重載無限制),final修飾的類不能被繼承。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章