1. 程式人生 > >Java基礎筆記(7)----三個修飾符

Java基礎筆記(7)----三個修飾符

共享 sta strac span 成員 abstract 化工 聲明 訪問修飾符

  1. abstract抽象
    1. 方法
      1. 抽象方法:abstract修飾的方法,只有聲明 而沒有方法的實現(連{}都沒有)。
      2. 語法:修飾符 返回值類型 方法名(形參列表);
      3. 註意:抽象方法 必須定義在 抽象類中。
      1. 抽象類:被abstract修飾的類,不能 實例化(創建對象)。
      2. 語法: 修飾符 class 類名 [繼承關系]{}
      3. 註意:
        1. 抽象類 不以創建對象;但是 可以聲明引用(強制多態)。
        2. 子類可以繼承抽象類,但是 必須實現抽象類中的所有抽象方法; 除非 該子類又是抽象類。
        3. 抽象類中 可以有抽象方法 也可以有非抽象的方法。

        抽象類的好處:強制 使用多態。

  2. static 靜態、
    1. 屬性/實例變量
      1. 語法:類以內,方法以外  static 數據類型 變量名;
      2. 概念:類變量/靜態變量,是指被static修飾的屬性/實例變量,被該類的 所有對象共享(與對象無關)。
      3. 使用: 類名.屬性名
    2. 方法/實例方法
      1. 語法:訪問修飾符 static 返回值類型 方法名(形參列表){

        // 方法的實現部分

        }

      2. 概念:類方法/靜態方法,是指被static修飾的方法,被該類的 所有對象共享(與對象無關)。
      3. 使用:類名.方法名(實參); // 建議
      4. 註意:
        1. static修飾的方法中不允許使用this和super;
      5. static修飾的方法可以被繼承;只能被static的方法覆蓋;但沒有多態(詳見下條);
      6. 通過引用調用static方法時,執行的是 引用類型自身的;
      7. 在static方法中 只能直接調用static的方法;而不能直接調用非static的方法。
    3. 靜態代碼塊
      1. 初始代碼塊:在類以內,方法以外 定義的代碼塊。
      2. 用於 在創建對象時,和 屬性初始化 按定義的先後順序 依次進行初始化工作。
      3. 靜態代碼塊:用static修飾的 類以內方法以外的代碼塊, 只執行1次(在類加載時)。
  3. final 最終
    1. 變量(實例變量+局部變量+static變量)
      1. final修飾的變量 為最終變量,只能被賦值1次 不允許修改(常量)。 
      2. 註意:
        1. final修飾的實例變量,將不再分配默認值;
        2. 可以在 聲明/初始代碼塊/構造方法 賦初值;
        3. 如果使用構造方法 給final的屬性賦初值,必須保證 所有的構造中都賦初值。
        4. final修飾的類變量,將不再分配默認值;可以在聲明/靜態代碼塊 賦初值。
        5. final修改引用類型 的變量時,代表 引用自身的值不允許修改(地址值不允許改)。

    1. 方法
      1. final修飾的方法 為最終方法,不能被 覆蓋。
      1. final修飾的類 為最終類,不能被 繼承。
      2. 如果一個類是final的,則該類中的所有方法都是final的。
  4. 拓展與提升:
    1. static,final、abstract都不能修飾構造方法
    2. 類加載
      1. 概念:在JVM第1次使用某個類時,先從classpath下找到對應的.class文件,讀取該文件中的所有內容(屬性/方法/類名/包結構/構造/靜態....),並保存起來的過程,稱為類加載。
      2. 類加載 在同一個JVM中 只進行1次。
      3. 類加載的時機:第1次使用某個類時
        1. 創建該類的對象
        2. 使用該類的靜態成員(靜態變量/靜態方法)
        3. 創建子類對象 或 使用子類的靜態成員
          1. 遞歸對父類 類加載1次
          2. 對子類 類加載1次
          3. 分配空間 所有實例變量 賦默認值
          4. 遞歸的創建父類對象
          5. 初始化本類屬性 和 初始代碼塊 按定義的先後執行
          6. 調用本類構造方法

Java基礎筆記(7)----三個修飾符