一.抽象類(lèi) (abstract 修飾):
修飾符 abstract
一個(gè)類(lèi)如果用abstract修飾哪亿,這個(gè)類(lèi)就變成了抽象類(lèi),抽象類(lèi)是不能被實(shí)例化的類(lèi)豁跑,通常用于定義一個(gè)通用的基類(lèi)呼奢,其中可以包含具體的方法實(shí)現(xiàn)和抽象方法(沒(méi)有實(shí)現(xiàn)的方法)。子類(lèi)必須實(shí)現(xiàn)這些抽象方法本橙。
一個(gè)類(lèi)只能繼承一個(gè)類(lèi)
關(guān)鍵點(diǎn)
abstract 關(guān)鍵字:用于聲明抽象類(lèi)和抽象方法。
抽象方法:只有方法簽名鸥印,沒(méi)有方法體勋功。
不能實(shí)例化:抽象類(lèi)不能直接創(chuàng)建對(duì)象坦报,只能通過(guò)繼承它的子類(lèi)來(lái)實(shí)例化。
// abstract 將Animal 類(lèi)修飾為 抽象類(lèi)
abstract class Animal {
// abstract 將 makeSound 方法修飾為抽象方法, 抽象方法沒(méi)有方法體也就是 {}
public abstract void makeSound();
// 具體方法
public void eat() {
System.out.println("This animal is eating.");
}
}
// 子類(lèi)實(shí)現(xiàn)抽象方法
class Dog extends Animal {
@Override
// 抽象類(lèi)Animal 的方法 makeSound 必須在 子類(lèi) Dog 中實(shí)現(xiàn),除非 Dog 類(lèi)也是抽象類(lèi)
public void makeSound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.makeSound(); // 輸出 "Bark"
dog.eat(); // 輸出 "This animal is eating."
cat.makeSound(); // 輸出 "Meow"
cat.eat(); // 輸出 "This animal is eating."
}
}
二. 接口(Interface): 可以理解為 接口是類(lèi)中所有方法都為抽象方法的類(lèi)
接口是一種完全抽象的類(lèi)狂鞋,它只包含方法簽名和常量片择,不包含任何具體實(shí)現(xiàn)。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口
骚揍,并提供這些接口中所有抽象方法的具體實(shí)現(xiàn)