1. 程式人生 > >java第八天---程式碼塊、繼承、方法重寫、final關鍵字

java第八天---程式碼塊、繼承、方法重寫、final關鍵字

1   三種常見程式碼塊

        a:區域性程式碼塊 
            在方法中出現;限定變數生命週期,及早釋放,提高記憶體利用率
      
 b:構造程式碼塊 
            在類中方法外出現;多個構造方法方法中相同的程式碼存放到一起,每次呼叫構造都執行,並且在構造方法前執行
        

c:靜態程式碼塊 
            在類中方法外出現,加了static修飾
            在類中方法外出現,並加上static修飾;用於給類進行初始化,在載入的時候就執行,並且只執行一次。

 

2 繼承

    1 繼承概述

多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麼多個類無需再定義這些屬性和行為,只要繼承那個類即可。

   2 繼承特點

a:Java只支援單繼承,不支援多繼承。
 b:Java支援多層繼承(繼承體系)

  3 繼承注意事項

  a:子類只能繼承父類所有非私有的成員(成員方法和成員變數)
  b:子類
不能繼承父類的構造方法,但是可以通過super(待會兒講)關鍵字去訪問父類構造方法

 

3 建立子類物件時,為什麼先執行父類的構造呢?

4 子類和父類的成員變數名稱相同時以及方法名相同時

在子類中訪問一個變數的查詢順序("就近原則")

            a: 在子類的方法的區域性範圍找,有就使用
            b: 在子類的成員範圍找,有就使用
            c: 在父類的成員範圍找,有就使用
            d:如果還找不到,就報錯

通過子類呼叫方法:
                a: 先查詢子類中有沒有該方法,如果有就使用
                b:在看父類中有沒有該方法,有就使用
                c: 如果沒有就報錯

 

5 this和super的區別

         this    代表的是本類物件的引用
        super  代表的是父類儲存空間的標識(可以理解成父類的引用,可以操作父類的成員)

this和super的使用


        a:呼叫成員變數
            this.成員變數  呼叫本類的成員變數
            super.成員變數     呼叫父類的成員變數
        b:呼叫構造方法
            this(...)            呼叫本類的構造方法
            super(...)            呼叫父類的構造方法
        c:呼叫成員方法
            this.成員方法         呼叫本類的成員方法
            super.成員方法     呼叫父類的成員方法

 

6 子類構造方法與父類構造方法(繼承中構造方法)

   子類中所有的構造方法預設都會訪問父類中空引數的構造方法

   每一個構造方法的第一條語句預設都是:super()
   在這裡簡單的提一句,Object類。否則有人就會針對父類的構造方法有疑問

 

7 構造方法注意事項

父類沒有無參構造方法,子類怎麼辦?
      
 a: 在父類中新增一個無參的構造方法
        b:子類通過super去顯示呼叫父類其他的帶參的構造方法
        c:子類通過this去呼叫本類的其他構造方法
            本類其他構造也必須首先訪問了父類構造

注意事項:

super(…)或者this(….)必須出現在第一條語句上

 

8 方法重寫

 1 什麼叫方法重寫

子類中出現了和父類中一模一樣的方法宣告(方法名,引數列表,返回值型別),

2 為什麼要方法重寫

當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內容。

 

9 方法重寫的注意事項

       a:父類中私有方法不能被重寫
            因為父類私有方法子類根本就無法繼承
        b:子類重寫父類方法時,訪問許可權不能更低
            最好就一致


        c:父類靜態方法,子類也必須通過靜態方法進行重寫
            其實這個算不上方法重寫,但是現象確實如此

 

10  final關鍵字

1 為什麼會有final

由於繼承中有一個方法重寫的現象,而有時候我們不想讓子類去重寫父類的方法

2 final修飾特點

        修飾類:        被修飾類不能被繼承
        修飾方法:    被修飾的方法不能被重寫
        修飾變數:    被修飾的變數不能被重新賦值,因為這個量其實是一個常量

3 注意事項

 

11  第八天課後作業

     1

 

    2