標籤:
1. 什麼是物件導向?
將功能封裝進對象,強調具備了功能的對象。
特點: 將複雜的事情簡單化, 物件導向將以前的過程中的執行者,變成了指揮者。
2. 類和對象的關係 類是具體事物的抽象,概念上的定義;對象即是該類事物實實在在存在的個體。 Java中用類描述事物就是描述事物的
屬性和
行為。
成員變數和局部變數的區別? |--成員變數: 定義在類中,整個類中都可以被訪問; 隨著對象的建立而建立,存在於對象所在的堆記憶體中; 有預設初始化值。 |--局部變數: 只定義在局部範圍內; 存在於棧記憶體中,作用的範圍結束,變數空間會自動釋放; 局部變數沒有預設初始化值。
匿名對象:當對對象方法僅進行一次調用時;匿名對象可以作為實際參數進行傳遞。 3. 物件導向的特徵
|--封裝: 隱藏對象的屬性和實現細節,僅對外提供公用訪問方式。
好處:將變化隔離;便於使用;提高重用性;提高安全性。
建構函式
特點:函數名與類名相同 不用定義傳回值類型 不可以寫return語句
作用: 給對象初始化
|--繼承:共性抽取。多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,提高代碼複用性。 好處:提高了代碼的複用性;讓類與類之間產生了關係,多態的前提。 特點:Java只支援單繼承,但是支援多層繼承(繼承體系)
|--抽象類別
特點:1. 抽象方法只能定義在抽象類別中,抽象類別和抽象方法必須由abstract關鍵字修飾。 2. 抽象方法只定義方法聲明,並不定義方法實現。 3. 抽象類別不可以被執行個體化 4. 只有通過子類繼承抽象類別並實現其中所有抽象方法後,該子類才可以執行個體化。‘
細節:1. 抽象類別中有建構函式,用於給子類對象進行初始化。 2. 抽象類別可以定義非抽象方法。 3. 抽象關鍵字abstract不可以與final,private,static共存。 4. 抽象類別中可以不定義抽象方法。
模板方法設計模式:當功能內部一部分實現是確定的,一部分實現是不確定的。這時可以把不確定的部分暴露出去,讓子類去實現。
|--介面:介面是對外提供的規則;是功能的擴充;介面的出現降低了耦合性。 具有固定的成員修飾符:成員變數 public static final 成員方法 public abstract
特點:1. 類與介面是實現關係implements。 2. 介面可以被多實現,避免了單繼承的局限性。 3. 介面可以多繼承介面。
抽象類別與介面的區別:
1. 抽象類別只能被單繼承;介面可以被多實現。
2. 抽象類別中可以定義非抽象方法,子類可以直接繼承使用;介面中都有抽象方法,需要子類去實現。
3. 抽象類別使用的是is a關係;介面使用的是like a關係。
4. 抽象類別的成員修飾符可以自訂;介面中的成員修飾符是固定的:public。
覆蓋與重載 |--
覆蓋(override):子父類一模一樣。 注意:父類中的私人方法不可以被覆蓋; 覆蓋時,子類方法許可權要大於等於父類方法許可權; 靜態只能覆蓋靜態。 |--
重載:只看同名函數的參數列表。傳回值可以相同也可以不同,無法以傳回值類型作為重載函數的區分標準。
|--多態:事物的多種體現形式 體現:父類引用指向子類對象。 好處:提高了程式的擴充性。 弊端:當父類引用指向子類對象時,雖然提高了擴充性,但是只能訪問父類中具備的方法,不可以方法子類中特有的方法。 前提:1. 必須要有關係(繼承、實現)。 2. 通常會有覆蓋操作。 內部類:將一個類定義在另一個類的裡面, 訪問特點: 1. 內部類可以直接存取外部類中的成員,包括私人成員。 2. 而外部類要訪問內部類中的成員必須要建立內部類的對象。
4. 關鍵字 |--
this:this代表本類對象的引用。
什麼時候使用this? 當在函數內需要用到調用該函數的對象時,就用this。
|--super:super代表父類引用
作用:當子父類出現同名成員時,可以用super進行區分; 子類要調用父類建構函式時,可以使用super語句。
關於super()和this()
兩個語句只能有一個定義在第一行,所以只能出現其中一個;
因為super()或者this()都是調用建構函式,建構函式用於初始化,初始化的動作要先完成,所以一定要定義在第一行。
|--static 被static修飾後的成員具有的特點:
隨著類的載入而載入;
優先於對象存在;
被所有對象所共用;
可以直接被類名調用。
注意點:
靜態方法只能訪問靜態成員;
靜態方法中不可以寫this, super關鍵字;
主函數是靜態。
|--final:可以修飾類,方法,變數 特點: 被final修飾的類是一個最終類,不可以被繼承; 被final修飾的方法是一個最終方法,不可以被覆蓋; 被final修飾的變數是一個常量,只能賦值一次。
5. 異常
Throwable:子類以父類名作為子類的尾碼名。
可拋出性。
|--Error:錯誤,通常出現重大問題時,不編寫針對代碼對其處理。
|--Exception:在運行時運行出現的一切情況,可以通過try catch finally處理。
Throwable中的方法:
|--getMessage():擷取異常資訊,返回字串。
|--toString():擷取異常類名和異常資訊,返回字串。
|--printStackTrace():擷取異常類名和異常資訊,以及異常出現在程式中的位置,傳回值vvoid。
|--printStackTrace(PrintStream s):通常用該方法將異常內容儲存在記錄檔中,以便查閱。
throws和throw:
|--throws:用於標識函數暴露出的異常;用在函數上,後面跟異常類名。
|--throw:用於拋出異常對象;用在函數內,後面跟異常對象。
異常處理: try{需要檢測的代碼}catch(異常類、變數){異常處理代碼}finally{一定會執行的代碼}
注意:finally代碼塊只有一種情況不會被執行,就是在之前執行了system.exit(0)。
自訂異常:
步驟:1. 自訂類繼承Exception或者其子類。 2. 通過建構函式定義異常資訊。 3. 通過throw將自訂異常拋出。
異常細節: 1. RuntimeException以及其子類如果在函數中被throw拋出,可以不用在函數上聲明。 2. 一個方法被覆蓋時,覆蓋它的方法必須拋出相同的異常或異常的子類。 3. 如果父類拋出多個異常,那麼重寫(覆蓋)方法必須拋出那些異常的一個子集,不能拋出新的異常。
包之間的訪問:
Java基礎-物件導向