標籤:class 建立 ati 如何 throw blog 關係 類對象 ring
在Java中類與類之間的關係
1.彙總關係 : 兩個類的關聯程度較低,可以單獨存在。
2.組合關係 : 兩個的關聯程度比較高。
Java中如何來表現這個關係。
一類A作為屬性存在類B中。
3.依賴關係: 兩個類的關聯程度比較高。
一個類中定義一個方法,將另外一個類作為方法的參數。
4.關聯關係: 它的寫法和整體和部分的關係的的寫法是樣的,表達的含義比一樣。
5.繼承關係
物件導向的三大特徵之一: 繼承
想判斷兩個類之間是否存在繼承關係?
通過判斷兩個類之間是否有所屬關係。 is a 語句來判斷
Java中如何來描述兩個類的繼承關係:
通過extends關鍵之來描述繼承關係。
格式:
class A extends B{ }
類A叫類B的子類。
類B稱為類A的父類(超類,基類)
繼承的作用: 減少重複代碼(最佳化代碼的方式)
繼承的使用注意點:
1.不要為了節省代碼亂繼承。 要想使用繼承必須存在有繼承關係。
2.java中的繼承屬於單繼承。 一個子類只允許有一個父類。允許多重繼承。
3.父類中一般是子類的公有的成員(屬性和行為)。子類是允許有自己獨用的行為和屬性。
4.父類類私人成員是不能繼承的。
5.構造方法也是不能繼承的。
6.子類建立對象的時候會預設調用父類的無參構造方法。
7.父類中最好存在有無參的構造方法。
8. 如果子類中和父類中同名的成員時,預設是優先使用子類。
9. 如果子類構造方法中指定了調用父類的構造方法,那麼就不會在調用父類中的無參構造方法。
super關鍵字
super: 用來引用父類的空間
super關鍵字的應用:
1.在子類中用來直接調用父類中成員變數。
2.在子類的構造方法中調用父類的構造方法。
super調用構造方法的使用注意點:
- 如果super用來調用父類的構造方法,那麼super語句必須是子類的構造方法中的第一個語句。
super關鍵字和this關鍵字的區別:
1關鍵字的含義比較
1.this關鍵字所屬的方法的調用者對象。
2.super表示父類空間的引用
2使用前提來比較
1.this關鍵字不需要繼承也可以使用
2.super關鍵字必須要有繼承
3調用構造方法比較
1.this關鍵字是調用當前類的構造方法
2.super代用父類的構造方法。
方法的重寫
作用:擴充父類中的方法。
使用情境:父類中方法滿足不了子類
方法重寫的注意點:
1.子類中的方法要和父類中的方法同名
2.子類中的參數列表要和父類的一樣
3.子類的許可權修飾符要大於等於父類的許可權修飾符。
4.傳回值類型和父類一樣,或者是父類的子類。
final修飾符
意思:最終的,不可更改的.
作用:1,可以用來修飾變數
2.可以用來修飾方法
3.可以用來修飾類
使用注意點:
1.一個變數如果被final修飾了必須要初始化
2.如果一個基礎資料型別 (Elementary Data Type)變數被final,變數就不能修改了
3.如果用final修飾一個引用資料類型變數,那麼這個變數就不能再引用其他對象
4.如果final修飾方法,方法就不允許重寫。
5.如果final修飾一個類,那麼這個類就不允許被繼承。
抽象類別
抽象方法的使用情境: 有一個事物存在某種行為,但是沒有具體的實現。可以通過抽象類別來實現
定義抽象方法: abstract關鍵字
抽象方法定義格式: abstract 方法名();
抽象類別的定義格式: abstract class 類名{}
abstract的使用注意事項:
1.abstract修飾的方法是一個抽象的方法,方法不允許有主體。
2.一個類中如果有抽象方法,那麼這個類一定是一個抽象類別。
3.一個類如果繼承抽象類別,那麼你就必須要重寫抽象類別中的所有的抽象方法。
4.一個抽象類別中允許抽象方法和非抽象方法共存。
5.抽象類別不能建立對象。
6.抽象類別中是可以定義構造方法。
7.抽象類別中是可以沒有抽象方法。
abstract修飾方法不能和一下關鍵字連用:
abstract不能和private一起修飾方法。
abstract不能和static一起修飾方法。
abstract不能和final一起來修飾方法。
抽象類別和普通類的區別:
1.抽象類別有abstract關鍵字修飾,普通類沒有
2.抽象類別有抽象方法,普通了沒有。
3.抽象類別不能建立對象,普通類可以建立對象。
介面
使用interface 關鍵字來表示介面。
定義介面的格式:
interface 介面名 {介面的內容}
實現介面:
implements : 表示實現
class B implements 介面名{
}
介面的使用注意點:
1.介面中定義的方法是沒有主體的。介面中的方法預設都是抽象方法。
2.介面中定義的變數預設都是常量。修飾方式:public static final。
3.介面不能定義構造方法
4.介面需要用其他的類來實現。
5.如果一個普通類實現介面,那麼就必須要實現介面中的所有方法。
6.如果是一個抽象類別實現介面,類就不一定需要實現介面中的方法。
7.介面是支援都多實現的。一個類可以實現多個介面。
8.介面不能建立對象。
Java 物件導向的第三大特徵: 多態
多態的變現形式:1.父類的類型指向子類的對象
2.介面類型指向介面類型的實現對象
1.父類的類型指向子類的對象:
樣本:
Animal a = new Dog();
多態的使用注意事項:
1.要想有多態必須要有繼承。
2.多態中要有方法的重寫
3.子類和父類中有同名的非靜態方法,預設是調用子類中的方法。
4.子類和父類中有同名的變數,預設是調用父類中的。
5.子類和父類中有同名的靜態方法。預設調用父類中的方法。
總結:子類和父類中存在同名成員,預設是調用父類中的,非靜態方法除外。
多態的應用:
1.在方法中用於形參進行傳遞。可以增強代碼的可擴充性
2.在方法中用於傳回值,可以返回多種類型的對象
(這個時候需要用到資料類型的轉換,資料轉換之前需要判斷某個對象是否屬於某個類型)
在引用資料類型中: 子類向父類轉換叫自動類型轉換。
樣本 Aniaml a = new Dog();
在引用資料類型中: 父類向子類進行轉換叫強制類型轉換。
樣本: a instanceof Mouse
Mouse m = (Mouse)a
2.介面類型的變數指向介面實作類別的對象
樣本:
介面 a = new 實作類別();
a 就可以實現介面裡面的方法
內部類
定義: 在一個類的內部存在有另外一個類。
內部類的class檔案的命名: 外部類$內部類
內部類的使用情境:
一個類A中要使用到另外一個類B,類B中又要使用到類A,這個時候就需要使用到內部類。
在一個類內部類分為兩種:
1 成員內部類
2.局部內部類
成員內部類
定義在內裡面方法外面的類叫成員內部類。
訪問內部類的方式:
方式一:
在外部類中提供一個方法來初始化內部內對象,在方法中對對象做操作。
方式二: 只有成員內部類可以使用。
在其他類中間接的建立內部類對象直接使用。
格式: 外部類.內部類 對象 = new 外部類().new 內部類();
內部類的使用注意點:
1.外部類中定義的成員可以在內部類中直接存取到
2.如果內部類中的成員和外部類的成員同名,就近原則,調用內部類中的。
3..如果內部類中的成員和外部類的成員同名,可以通過 外部類名.this.屬性名稱 來擷取到外部類的屬性。
4.如果static修飾內部類 ,內部類中訪問的成員需要使靜態。
局部內部類
定義在方法中的類。
訪問局部內部類的方式:在外部類中提供一個方法來初始化內部內對象,在方法中對對象做操作
局部內部類的使用注意點:
- 內部類中想訪問外部類中 的局部變數,這個局部變數必須用final來修飾
匿名內部類
匿名內部類:就是沒有名字的內部類。
匿名內部類的作用: 簡化代碼
匿名的內部類需要通過 繼承或者介面來實現
異常
程式和代碼的不正常情況,叫異常
異常類:用一個類來描述所有的異常情況叫異常類
異常體系:所有的異常類組合起來稱為異常體系
Object : 所以異常和錯誤的超類
Throwable: 所有異常的超類
Error :錯誤類
Execption:異常類
繼承圖:
Throwable:類中最常見的三種方法
1 toString() 返回此 throwable 的簡短描述 :描述的是類的完整類名+傳入的異常資訊。
2 getMessage() 擷取傳入的異常資訊
3 printStackTrace()列印異常的棧資訊
Error :錯誤 : 指的是jvm或者硬體的原因導致的錯誤 .無需人工處理
Execption:異常 : 指的是jvm虛擬機器產生的異常
判斷列印的是異常還是資訊:
如果列印資訊的後面是以error結尾的 ,列印出來的就死活一個錯誤資訊。
如果列印的資訊的後面是以Execption結尾的,列印出來的是異常資訊。
處理異常的方式有兩種:
1.捕獲處理異常:
捕獲處理異常的格式:
try{//可能出現異常的代碼}catch(接收異常的變數){
//處理異常的操作
}
捕獲異常的使用注意點:
1.如果try中的代碼出現了異常,出現異常之後的代碼就不會執行了。
2.一個try後面可以處理多個異常。
3.捕獲異常的時候可以直接捕獲一個最大的異常Execption
4.捕獲的異常需要按照由小到大的順序排列。
java第五周學習