在Java中,抽象類是用來定義一組相關類的共同特征和行為的。抽象類不能被實例化,只能被繼承。
要定義一個抽象類,需要在類的聲明前加上關鍵字"abstract"。例如:
abstract class Animal {
// 抽象類可以包含普通方法
public void eat() {
System.out.println("Animal is eating");
}
// 抽象方法沒有具體的實現,只有方法的聲明
public abstract void sound();
}
抽象方法是在抽象類中聲明但沒有具體實現的方法,需要在子類中進行實現。子類必須實現抽象類中的所有抽象方法,除非子類自己也是一個抽象類。例如:
class Cat extends Animal {
// 子類實現抽象方法
public void sound() {
System.out.println("Cat is meowing");
}
}
class Dog extends Animal {
// 子類實現抽象方法
public void sound() {
System.out.println("Dog is barking");
}
}
然后可以創建子類的實例,并調用其方法:
public class Main {
public static void main(String[] args) {
Animal cat = new Cat();
cat.eat();
cat.sound(); // 輸出:Cat is meowing
Animal dog = new Dog();
dog.eat();
dog.sound(); // 輸出:Dog is barking
}
}
值得注意的是,如果一個類繼承了抽象類但沒有實現其中的所有抽象方法,那么該類也必須聲明為抽象類。這樣的類不能直接實例化,只能被其他類繼承。