天天看點

第三次學JAVA再學不好就吃翔(part30)--繼承

學習筆記,僅供參考

文章目錄

  • ​​面向對象​​
  • ​​繼承​​
  • ​​先來個例子​​
  • ​​繼承的好處和弊端​​
  • ​​Java中類的繼承特點​​
  • ​​繼承的注意事項​​

面向對象

繼承

繼承(extends),讓類與類之間産生關系,比如子父類關系。

先來個例子

我們先定義一個Animal類,再定義一個Bunny類,Bunny類繼承了Animal類:

class ExtendsTest {
  public static void main(String[] args) {
    Bunny b = new Bunny();
    b.name = "Huang";
    b.age = 9;
    b.show();

    
  }
}


class Animal {
  String name;
  int age;

  public void eat() {
    System.out.println("吃飯");
  }
  public void sleep() {
    System.out.println("睡覺");
  }
  public void show() {
    System.out.println(name + "已經" + age + "個月啦");
  
  }
}

class Bunny extends Animal {

}      

輸出:

Huang已經9個月啦      

繼承的好處和弊端

  • 繼承的好處
  • 提高了代碼的複用性
  • 提高了代碼的維護性
  • 讓類與類之間産生了關系,是多态的前提
  • 繼承的弊端
  • 類的耦合性增強了。
  • 開發的原則:高内聚,低耦合。
  • 耦合:類與類的關系
  • 内聚:自己完成某件事情的能力

Java中類的繼承特點

  • Java中類的繼承特點
  • Java隻支援單繼承,不支援多繼承。
  • Java支援多層繼承(兒子繼承父親,父親繼承爺爺,一層一層的繼承體系)
  • 如果想用這個體系的所有功能,用最底層的類建立對象
  • 如果想看這個體系的共性功能,看最頂層的類
  • 舉個例子
class ExtendsTest2 {
  public static void main(String[] args) {
    DemoA da = new DemoA();  //共性功能
    da.show1();  
    DemoC dc = new DemoC();  //擁有所有功能
    dc.show1();
    dc.show2();  
    dc.show3();
  }
}

class DemoA {
  public void show1() {

    System.out.println("DemoA");
  
  }
}

class DemoB extends DemoA {

  public void show2() {
    System.out.println("DemoB");
  
  }
}

class DemoC extends DemoB {

  public void show3() {
    System.out.println("DemoC");
  
  }
}      

輸出:

DemoA
DemoA
DemoB
DemoC      

繼承的注意事項

  • 繼承的注意事項
  • 子類隻能繼承父類所有非私有的成員(成員方法和成員變量);
  • 子類不能繼承父類的構造方法,但是可以通過super關鍵字去通路父類構造方法;
  • 不要為了部分功能而去繼承。