在Java中,類可以被其他類所繼承,稱為子類。子類繼承了父類的屬性和方法,但同時(shí)也可以重新定義和修改父類的方法,稱為覆蓋。在本文中,我們將比較子類和父類方法之間的關(guān)系。
// 父類 public class Animal { public void bark() { System.out.println("動(dòng)物在叫!"); } } // 子類 public class Dog extends Animal { public void bark() { System.out.println("狗在汪汪叫!"); } }
在上面的代碼中,我們定義了一個(gè)Animal類和一個(gè)Dog類。Dog類繼承了Animal類,并且重新定義了bark()方法。現(xiàn)在我們來比較一下兩個(gè)方法的調(diào)用情況。
Animal animal = new Animal(); animal.bark(); // 輸出:"動(dòng)物在叫!" Dog dog = new Dog(); dog.bark(); // 輸出:"狗在汪汪叫!"
從上面的代碼可以看出,當(dāng)我們創(chuàng)建一個(gè)Animal對(duì)象并調(diào)用它的bark()方法時(shí),輸出的是"動(dòng)物在叫!",這是Animal父類中定義的方法。但是當(dāng)我們創(chuàng)建一個(gè)Dog對(duì)象并調(diào)用它的bark()方法時(shí),輸出的是"狗在汪汪叫!",這是Dog子類中重新定義的方法。
此外,我們還可以通過super關(guān)鍵字來調(diào)用父類的方法。例如:
// 子類 public class Dog extends Animal { public void bark() { super.bark(); // 調(diào)用父類方法 System.out.println("狗在汪汪叫!"); } }
在上面的代碼中,我們調(diào)用了父類的bark()方法,并在其后添加了"狗在汪汪叫!"的輸出。因此,當(dāng)我們創(chuàng)建一個(gè)Dog對(duì)象并調(diào)用它的bark()方法時(shí),輸出的是:
動(dòng)物在叫! 狗在汪汪叫!
總之,在Java中,子類可以繼承父類的屬性和方法,也可以重新定義和修改父類的方法。使用super關(guān)鍵字可以調(diào)用父類的方法。這些特點(diǎn)使得Java中的繼承機(jī)制非常強(qiáng)大和靈活。