在Java中,實現繼承和多態是面向對象編程的兩個重要特性。下面分別介紹它們的實現方式:
繼承允許一個類(子類)繼承另一個類(父類)的屬性和方法。這樣,子類可以重用父類的代碼,同時還可以擴展和覆蓋父類的方法。要實現繼承,需要在子類的定義前使用extends
關鍵字。
示例:
// 父類
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
// 子類
class Dog extends Animal {
// 繼承父類的eat()方法
@Override
public void eat() {
System.out.println("Dog is eating");
}
// 新增方法
public void bark() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // 輸出 "Dog is eating"
dog.bark(); // 輸出 "Dog is barking"
}
}
多態是指不同類的對象可以通過相同的接口進行調用,從而實現不同的行為。多態的實現主要依賴于接口和父類引用。
示例:
// 父類
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// 子類1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
// 子類2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 使用父類引用指向子類對象
myAnimal.makeSound(); // 輸出 "Dog barks"
myAnimal = new Cat(); // 修改父類引用的指向
myAnimal.makeSound(); // 輸出 "Cat meows"
}
}
在這個例子中,我們使用父類引用myAnimal
分別指向子類Dog
和Cat
的對象。當我們調用myAnimal.makeSound()
方法時,會根據實際的對象類型(Dog
或Cat
)輸出不同的結果,這就是多態的體現。