教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是繼承?類的繼承如何重寫父類?

更新時間:2022年03月30日14時04分 來源:傳智教育 瀏覽次數(shù):

繼承的概念

在Java中,類的繼承是指在一個現(xiàn)有類的基礎(chǔ)上去產(chǎn)生一個新的類,產(chǎn)生的新類被稱作子類,現(xiàn)有類被稱作父類,子類會自動擁有父類的屬性和方法。例如定義一個Animal類作為父類,該類擁有一個call()方法,當子類Cow和Sheep繼承自Animal類時,就會自動擁有call()方法,接下來通過一個圖例來描述類的繼承關(guān)系,如圖3-11所示。

動物繼承關(guān)系圖

圖3-11動物繼承關(guān)系圖

在程序代碼中,如果想定義一個類繼承另一個類,需要使用extends關(guān)鍵字。如果一個類沒有使用extends關(guān)鍵字明確標識繼承另一個類,那么這個類就是默認繼承Object類。Object類是所有類的父類,那么該類中的方法適用于他的所有子類,其類中常用的方法有toString()、hashCode()方法等。

注意:

在類的繼承中,需要注意以下幾個問題,具體如下:

1、在Java中,類只支持單繼承,不允許多重繼承,也就是說一個類只能有一個直接父類。例如Cow這個類繼承Animal之后,就不允許繼承其他類。

2、多個類可以繼承一個父類,例如Cow和Sheep都可以繼承Animal類。

3、在Java中,多層繼承是允許的,即一個類的父類可以再去繼承其他的父類,例如Zebra類繼承自Horse類,而Horse類又可以去繼承Animal類,即子孫三代。

重寫父類方法

在繼承關(guān)系中,子類會繼承父類中定義的方法,但子類也可以在父類的基礎(chǔ)上擁有自己的特征,即對父類的方法進行重寫。需要注意的是,在子類中重寫的方法必須與父類被重寫的方法具有相同的方法名、參數(shù)列表以及返回值類型。接下來通過一個案例來演示如何實現(xiàn)子類重寫父類的方法。具體步驟如下:

1.創(chuàng)建Animal類

創(chuàng)建一個Animal類,并在類中定義兩個方法call()和sleep(),分別在兩個方法中輸出“動物發(fā)出的聲音”和“動物在睡覺”的信息,如文件3-19所示。

文件3-19Animal.java

package com.itheima.example10;
// 定義Animal類
public class Animal {
    // 定義動物叫的方法
    public void call()
    System.out.println("動物發(fā)出聲音...");
    }
    // 定義動物睡覺的方法
    public void sleep() {
    System.out.println("動物在睡覺...");
    }
}

2.創(chuàng)建Cow類創(chuàng)建一個Cow類,使其繼承Animal類,并在Animal類重寫call()方法,如文件3-20所示。

文件3-20Cow.java

java1package com.itheima.example10;
// 定義Cow類繼承Animal類
public class Cow extends Animal {
    // 定義一個打印name的方法
    public void call() {
        System.out.println("哞...");
    }
}

3.創(chuàng)建測試類

創(chuàng)建一個測試類Example10,分別調(diào)用call()方法和sleep()方法,如文件3-21所示。

文件3-21Example10.java

package com.itheima.example10;
public class Example10 {
    public static void main(String[] args) {
        Cow c = new Cow(); // 創(chuàng)建一個Cow類的實例對象
        c.call(); // 調(diào)用Cow重寫的call()方法
        c.sleep(); // 調(diào)用父類Animal的sleep()方法
    }
}

運行結(jié)果如圖3-12所示。

創(chuàng)建測試類

圖3-12運行結(jié)果從圖3-12的運行結(jié)果可以看出,當子類繼承父類的時候,會擁有父類中所有的成員,由此可知,在調(diào)用sleep()方法時,會自動調(diào)用父類的sleep()方法。當子類重寫了父類方法之后,創(chuàng)建的子類對象會自動調(diào)用重寫的方法,即調(diào)用的是子類的call()方法。

注意:子類重寫父類方法時,不可以使用比父類中被重寫的方法更嚴格的訪問權(quán)限,如:父類中的方法是public的,子類的方法就不可以是private的。



猜你喜歡:

什么是繼承?Java中如何聲明一個類繼承另一個類?

Java培訓(xùn)實戰(zhàn)教程之Java基礎(chǔ)知識精華部分

如何理解單繼承?單繼承的語法格式介紹

Java怎樣正確重寫父類?

傳智教育Java培訓(xùn)課程

0 分享到:
和我們在線交談!