對于Java程序員來說,繼承和擴展是必不可少的兩個概念。在面向?qū)ο蟮木幊讨校^承是指子類繼承父類的屬性和方法,而擴展則是在父類的基礎(chǔ)上新增自己的屬性和方法。
public class Animal {
private int age;
private String name;
public Animal(int age, String name) {
this.age = age;
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
public void sleep() {
System.out.println(name + " is sleeping.");
}
}
public class Dog extends Animal {
private String breed;
public Dog(int age, String name, String breed) {
super(age, name);
this. breed = breed;
}
public void bark() {
System.out.println(name + " is barking.");
}
public void play() {
System.out.println(name + " is playing.");
}
}
在上面的代碼中,Animal類是父類,它有兩個屬性age和name,還有兩個方法eat()和sleep()。Dog類是子類,它擴展了Animal類并新增了一個屬性breed和兩個方法bark()和play()。
在子類中,可以使用super關(guān)鍵字指代父類,以便訪問父類的屬性和方法。在Dog類的構(gòu)造函數(shù)中,我們使用了super(age, name)來調(diào)用Animal類的構(gòu)造函數(shù),并將age和name傳遞給它。
在繼承中,子類可以繼承父類的所有非私有屬性和方法,而且子類可以使用super關(guān)鍵字來訪問父類的屬性和方法。在上面的例子中,Dog類可以用super.eat()來調(diào)用Animal類的eat()方法。
然而,子類也可以重寫父類的方法,以便更好地滿足自己的需求。在上面的例子中,Dog類重寫了Animal類的sleep()方法,使得Dog類對象調(diào)用該方法時輸出內(nèi)容與父類不同。通過這樣的方式,我們可以讓子類更符合自己的需求,有時候甚至比父類更加通用。