更新時(shí)間:2021年08月11日16時(shí)00分 來源:傳智教育 瀏覽次數(shù):
在繼承關(guān)系中,子類會(huì)自動(dòng)繼承父類中公共的方法,但有時(shí)在子類中需要對(duì)繼承的方法進(jìn)行一些修改,即對(duì)父類的方法進(jìn)行重寫。需要注意的是,子類中重寫的方法需要和父類被重寫的方法具有相同的方法名、參數(shù)列表以及返回值類型。
在上一節(jié)案例中,Dog類從Animal類繼承了shout()方法,該方法在被調(diào)用時(shí)會(huì)打印“動(dòng)物發(fā)出叫聲”,這顯然不能描述一種動(dòng)物的具體叫聲,Dog類對(duì)象屬于犬類,發(fā)出的叫聲應(yīng)該是“汪汪”。為了解決這個(gè)問題,可以在Dog類中重寫父類Animal中的shout()方法,如文件1所示。
文件1 Example02.java
// 定義Animal類 class Animal { //定義動(dòng)物叫的方法 void shout() { System.out.println("動(dòng)物發(fā)出叫聲"); } } // 定義Dog類繼承動(dòng)物類 class Dog extends Animal { // 定義狗叫的方法 void shout() { System.out.println("汪汪……"); } } // 定義測(cè)試類 public class Example02 { public static void main(String[] args) { Dog dog = new Dog(); // 創(chuàng)建Dog類的實(shí)例對(duì)象 dog.shout(); // 調(diào)用Dog類重寫的shout()方法 } }運(yùn)行結(jié)果如圖1所示。
文件1中,定義了Dog類并且繼承自Animal類。在子類Dog中定義了一個(gè)shout()方法對(duì)父類的方法進(jìn)行重寫。從運(yùn)行結(jié)果可以看出,在調(diào)用Dog類對(duì)象的shout()方法時(shí),只會(huì)調(diào)用子類重寫的方法,并不會(huì)調(diào)用父類的shout()方法。
注意:
子類重寫父類方法時(shí),不能使用比父類中被重寫的方法更嚴(yán)格的訪問權(quán)限。如:父類中的方法訪問權(quán)限是public,子類重寫父類該方法的訪問權(quán)限就不能是private。
猜你喜歡:
JDBC連接oracle數(shù)據(jù)庫步驟【實(shí)戰(zhàn)教程】
怎樣實(shí)現(xiàn)redis緩存與數(shù)據(jù)庫同步?
北京校區(qū)