抽象類是一種不能被實(shí)例化的類,它的主要作用是用于被其他類繼承。抽象類可以包含抽象方法和非抽象方法,而抽象方法必須被子類實(shí)現(xiàn)。通常情況下,抽象類用于定義一些通用的行為或?qū)傩?,具體的實(shí)現(xiàn)則由子類來(lái)完成。
在 Java 中,可以通過(guò)使用 abstract 關(guān)鍵字來(lái)定義抽象類。抽象類的定義方式與普通類類似,但需要在類名前加上 abstract 關(guān)鍵字,如下所示:
public abstract class Animal {
// 抽象方法
public abstract void move();
// 非抽象方法
public void sleep() {
System.out.println("睡覺");
}
}
在上面的代碼中,我們定義了一個(gè)名為 Animal 的抽象類,包含一個(gè)抽象方法 move() 和一個(gè)非抽象方法 sleep()。抽象方法沒有方法體,只有方法簽名,用于指定方法的名稱、參數(shù)列表和返回值類型。而非抽象方法則包含了方法體,可以直接在方法中編寫代碼。
需要注意的是,如果一個(gè)類包含了抽象方法,那么該類必須也是抽象類。抽象類不能被實(shí)例化,但可以被子類繼承。子類必須實(shí)現(xiàn)父類中的所有抽象方法,否則子類也必須被定義為抽象類。
以下是一個(gè)示例代碼,演示了如何繼承抽象類并實(shí)現(xiàn)其中的抽象方法:
public class Cat extends Animal {
// 實(shí)現(xiàn)抽象方法
public void move() {
System.out.println("跑步");
}
// 重寫父類方法
public void sleep() {
System.out.println("打盹");
}
}
在上面的代碼中,我們定義了一個(gè)名為 Cat 的類,它繼承了 Animal 抽象類,并實(shí)現(xiàn)了其中的抽象方法 move()。同時(shí),我們重寫了父類中的 sleep() 方法,用于改變其行為?,F(xiàn)在,Cat 類可以被實(shí)例化并調(diào)用其中的方法。