在Java中,重寫和覆寫是兩個非常重要的概念,用于描述子類如何繼承父類的方法。重寫和覆寫兩個概念非常相似,但是它們的實現方式有所不同。以下是對這兩個概念的詳細解釋。
1. 重寫
重寫是指在子類中編寫一個和父類中同名同參數的方法。當子類中的這個方法被調用時,子類中的方法將會被執行,而不是父類中的方法。在Java語言中,重寫使得子類可以根據自己的需要覆蓋父類的方法,以便實現自己的特定功能。
public class Animal {
public void eat() {
System.out.println("Animal is eating...");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog is eating...");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eat();
}
}
在上面的示例代碼中,Dog類重寫了Animal類中的eat()方法。當創建一個Dog對象并調用eat()方法時,將會調用Dog類中的eat()方法,而不是Animal類中的eat()方法。
2. 覆寫
覆寫是指在子類中編寫一個和父類中同名不同參數的方法。當子類中的這個方法被調用時,子類中的方法將會覆蓋父類中的方法,但是如果調用父類中的方法需要用到參數,就需要在子類中顯式地調用。
public class Animal {
public void eat(String food) {
System.out.println("Animal is eating " + food);
}
}
public class Dog extends Animal {
public void eat() {
super.eat("bone");
System.out.println("Dog is eating bone...");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat("grass");
Dog d = new Dog();
d.eat();
}
}
在上面的示例代碼中,Dog類覆寫了Animal類中的eat()方法,但是在Dog類中沒有和父類中同名同參數的eat()方法。當創建一個Dog對象并調用eat()方法時,將會調用Dog類中的eat()方法,并在其中顯式地調用父類中的eat()方法,以便調用父類中需要用到參數的eat()方法。
下一篇css控件與文字對齊