1. 程式人生 > >繼承、this、super

繼承、this、super

繼承:

  定義一個類時,發現已有類和要定義的類相似 ,並且 要定義的類 屬於 已有類一種可以將要定義的類定義為已有類的子類。
方法重寫:

  繼承後,子類可以使用父類所有非私有的屬性和功能,但是如果子類覺得父類的方法不夠強大 按照自身的邏輯
  重新定義此方法 這個過程叫做方法重寫、方法複寫、方法覆蓋
方法重寫的注意事項
  1.可以使用@Override來檢驗是否為方法重寫
  2.方法重寫 子類方法的訪問許可權要大於等於父類方法的訪問許可權(public、default、private、protect)
  3.推薦子類重寫方法的宣告和父類方法完全一致
  4.當方法重寫時,如果返回值型別是基本型別 子父類方法的返回值型別必須一致
如果返回值型別是引用型別 子類方法的返回值型別可以是父類方法返回值型別的子類
  注意:
    父類物件優先於子類物件產生
    在子類的每一個構造方法的第一行 都有預設的一個super()呼叫父類的空參構造方法

    super(引數)可以呼叫父類的指定引數的構造方法、在對父類進行賦值時可用。

    this(引數)可以呼叫本類其他的構造方法 但是也必須寫在構造方法的第一行
    **this()和super()都需要寫在構造方法的第一行 所以不能共存在

變數的訪問原則

  就近訪問

      1、子類區域性> 子類成員 >父類成員
      2、this.屬性名 訪問本類的成員變數
      3、super.屬性名 訪問父類的非私有的成員變數
      4、this.方法名(引數) 訪問本類的成員方法
      5、super.方法名(引數) 訪問父類的非私有的成員方法

 

抽象方法:

    只有方法宣告 沒有方法體的方法 可以定義為抽象方法
    eg:public abstract void XXX();
抽象類:

    有抽象方法的類必須定義為抽象類

注意:

  abstract 只能修飾 方法和類

抽象類的使用

  1.抽象類不能建立物件
  2.定義子類繼承抽象類
  3.重寫抽象方法(實現方法)
  4.建立子類物件 呼叫方法

抽象類的特點(JDK1.7前)
  1.抽象類一定是一個父類
  2.抽象類中可以有具體的方法 供子類使用
  3.抽象類可以沒有抽象方法
  4.抽象類可以有多個抽象方法 子類必須全部實現這些抽象方法 子類才可以建立物件, 如果不實現 子類也得是一個抽象類
  5.抽象類有構造方法 為了子類使用

抽象類出現的意義
  1.抽象類定義類共性內容 供子類使用 提供了程式碼的複用性
  2.抽象類強制子類實現了方法