首頁 > Java > java教程 > 02.Java 基礎 - 繼承

02.Java 基礎 - 繼承

黄舟
發布: 2017-02-27 10:09:29
原創
1260 人瀏覽過

基本概念

  • #繼承的概念:依照現有類別的類型來建立新類,無需改變現有類別的形式,這種方法是稱為繼承。

  • 繼承的作用:當你先建立了一個類別 P 之後,現在需要新建一個類別 S ,但功能又與 P 相似。這時候我們想要偷懶,不想重新寫 S,就可以透過繼承來實現。

  • 繼承的關係:繼承關係被分成父類別(基底類別)和子類別(導出類別),。父類別是被繼承的物件(如 P),子類別是實現的繼承的物件(如 S)。

  • 繼承的方式:類別的繼承是單一繼承,即 S 在繼承了 P 之後,不能再繼承 P2。

  • 繼承的特點:子類別透過繼承將自動得到父類別中所有的域(變數)和方法。

  • 繼承的實作:在 Java 中透過關鍵字 extends 實作繼承。

class Parent {
}

class Son extends Parent {
}
登入後複製
登入後複製

IS-A 關係

Java 中的繼承關係屬於 IS-A 關係。

IS-A 關係如何理解,取上面的栗子:S 繼承了 P,我們可以說 S 是 P 。

在繼承關係中,繼承者完全可以替換被繼承者,反之則不行。一句話,我們「可以把人當牲口使,不能把牲口當人使」。


建構子與繼承

一個類別透過呼叫建構函式實作初始化。對於繼承來說,子類別、父類別的建構子有以下特點:

  • 子類別在繼承父類別時,如果父類別的建構子是隱含建構器,可以不手動呼叫。

  • 子類別在繼承父類別時,如果父類別的建構器是#​​##明確建構器,則必須手動呼叫。

  • 子類別在繼承父類別時,建構器呼叫順序總是從

    父類別依序往下進行的。

下面透過一個範例來探討:

class Parent {    // 无参构造器,即隐式构造器。
    public Parent() {
        System.out.println("initializing Parent");
    }
}

class Son extends Parent {    // 带参构造器,属显式构造器
    public Son(String name) {        // 关键 -> 由于父类是隐式构造器,这里可以不调用。
        System.out.println("initializing "+name);
    }
}

class Grandson extends Son {    public Grandson() {        // 关键 -> 父类是显式构造函数,必须手动调用
        super("son");
        System.out.println("initializing Grandson");
    }
}public class Test {
    public static void main(String[] args) {
        Grandson grandson = new Grandson();        // 关键 -> 构造器调用顺序总是从父类依次往下进行的,打印内容如下:
        // initializing Parent
        // initializing Son
        // initializing Grandson
    }
}
登入後複製
登入後複製

#基本概念

  • 繼承的概念:依照現有類別的類型來建立新類,無需改變現有類別的形式,這種方法是稱為繼承。

  • 繼承的作用:當你先建立了一個類別 P 之後,現在需要新建一個類別 S ,但功能又與 P 相似。這時候我們想要偷懶,不想重新寫 S,就可以透過繼承來實現。

  • 繼承的關係:繼承關係被分成父類別(基底類別)和子類別(導出類別),。父類別是被繼承的物件(如 P),子類別是實現的繼承的物件(如 S)。

  • 繼承的方式:類別的繼承是單一繼承,即 S 在繼承了 P 之後,不能再繼承 P2。

  • 繼承的特點:子類別透過繼承將自動得到父類別中所有的域(變數)和方法。

  • 繼承的實作:在 Java 中透過關鍵字 extends 實作繼承。

  • class Parent {
    }
    
    class Son extends Parent {
    }
    登入後複製
    登入後複製

IS-A 關係

Java 中的繼承關係屬於 IS-A 關係。

IS-A 關係如何理解,取上面的栗子:S 繼承了 P,我們可以說 S 是 P 。

在繼承關係中,繼承者完全可以替換被繼承者,反之則不行。一句話,我們「

可以把人當牲口使,不能把牲口當人使」。


建構子與繼承

一個類別透過呼叫建構函式實作初始化。對於繼承來說,子類別、父類別的建構子有以下特點:

  • 子類別在繼承父類別時,如果父類別的建構子是

    隱含建構器,可以不手動呼叫。

  • 子類別在繼承父類別時,如果父類別的建構器是#​​##明確建構器

    ,則必須手動呼叫。

  • 子類別在繼承父類別時,建構器呼叫順序總是從
  • 父類別依序

    往下進行的。

  • 下面透過一個例子來探究:
class Parent {    // 无参构造器,即隐式构造器。
    public Parent() {
        System.out.println("initializing Parent");
    }
}

class Son extends Parent {    // 带参构造器,属显式构造器
    public Son(String name) {        // 关键 -> 由于父类是隐式构造器,这里可以不调用。
        System.out.println("initializing "+name);
    }
}

class Grandson extends Son {    public Grandson() {        // 关键 -> 父类是显式构造函数,必须手动调用
        super("son");
        System.out.println("initializing Grandson");
    }
}public class Test {
    public static void main(String[] args) {
        Grandson grandson = new Grandson();        // 关键 -> 构造器调用顺序总是从父类依次往下进行的,打印内容如下:
        // initializing Parent
        // initializing Son
        // initializing Grandson
    }
}
登入後複製
登入後複製

 以上就是02.Java 基礎- 繼承的內容,更多相關內容請關注PHP中文網(www.php .cn)!


#

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板