Java面向對象關鍵字extends繼承的深入講解

一、 問題引出

面向對象的編程思想使得代碼中創建的類更加具體,他們都有各自的屬性,方法。有的時候一些客觀事物之前存在一些聯系,那麼他們在代碼中的具體類也存在一些聯系。
例如:設計一個動物類

public class Animal {
     public String name;
     public int age;
    public Animal(String name) {
        this.name = name;
    }
     public Animal(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println(this.name+"吃東西");
    }
}

這個動物類有自己的name,age屬性和eat方法

我們又想創建一個貓類和狗類

class cat {
    public  String name;
    public  int age;
    public cat(String name) {
        this.name = name;
    }
    public cat(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println(this.name+"吃飯");
    }
}
class dog{
    public  String name;
    public int age;

    public dog(int age) {
        this.age = age;
    }

    public dog(String name) {
        this.name = name;
    }
    public  void  eat(){
        System.out.println(this.name+"幹飯");
    }
}

由於大傢都是碳基生物,你要吃飯我也要吃飯,你有名字我也有名字,也都有自己的年齡,我們在創建其他類的時候還需要在寫一遍他們的屬性name,age,和方法eat。並且,從邏輯上來說貓和狗都屬於動物。這就造成瞭大量重復的代碼,那有沒有什麼辦法能讓我不用把這些屬性。方法在寫一遍呢?

繼承:我來啦!!!

繼承作為面向對象編程的一個非常重要的關鍵字,在C++,和Java當中都可以使用它來減少代碼冗餘。顧名思義,它可以讓一個子類繼承另一個父類,就像兒子繼承爸爸的財產一樣,繼承後的子類可以擁有父類的方法,屬性,這樣每次在定義動物類完之後,在想要定義狗或者貓類的時候就不用再把多餘的代碼寫一遍瞭。我們來看看效果。

二、繼承extends

2.1 繼承的用法

子類extends父類即可

class cat extends animal{
    public cat(String name) {
        super(name);
    }
    public cat(int age){
        super(age);
    }
    public  void catchMouce(){
        System.out.println(this.name+"抓老鼠");
    }
}
class dog extends animal{
    public dog(String name) {
        super(name);
    }

    public dog(int age) {
        super(age);
    }
    public  void defence(){
        System.out.println(this.name+"看傢");
    }
}


在上面的代碼中,cat,dog被稱為子類、派生類,而animal被稱為父類或者超類,extends英文意思為擴展,這裡可以理解成繼承,例如我們寫的cat類有瞭抓老鼠的方法,dog類有瞭看傢的方法。繼承可以讓子類擁有父類public修飾的屬性和方法,cat、dog類就繼承瞭animal類的name、age屬性以及eat方法。

2.2 基本語法

使用 extends 指定父類.

子類會繼承父類的所有 public 的字段和方法.

對於父類的 private 的字段和方法, 子類中是無法訪問的.

子類的實例中, 也包含著父類的實例. 可以使用 super 關鍵字得到父類實例的引用

子類繼承父類之後,還可以聲明自己特有的屬性和方法,實現功能的拓展。

2.3繼承的好處

1:減少代碼的冗餘,提高復用性。

2:便於功能的拓展

3:為多態提供瞭前提。

2.4繼承性

Java各種類互相繼承的屬性稱作繼承性,繼承性有一些規定。

1:一個類可以被多個子類繼承。

2:Java的單繼承性:一個子類隻能繼承一個父類。比如一個兒子隻能有一個親爸爸,一個爸爸可以有好幾個兒子。在C++,和python中支持多繼承

3:如果一個類沒有說明一個類的父類的話,那麼此類繼承於java.lang.Object類

4:所以的類(除瞭java.lang.Object)都間接或直接的繼承java.lang.Object類。那麼就意味這所有的類都具有java.lang.Object類聲明的功能。

總結

到此這篇關於Java面向對象關鍵字extends繼承的文章就介紹到這瞭,更多相關Java關鍵字extends繼承內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: