一.抽象类 (abstract 修饰):
修饰符 abstract
一个类如果用abstract修饰,这个类就变成了抽象类,抽象类是不能被实例化的类,通常用于定义一个通用的基类,其中可以包含具体的方法实现和抽象方法(没有实现的方法)。子类必须实现这些抽象方法。
一个类只能继承一个类
关键点
abstract 关键字:用于声明抽象类和抽象方法。
抽象方法:只有方法签名,没有方法体。
不能实例化:抽象类不能直接创建对象,只能通过继承它的子类来实例化。
// abstract 将Animal 类修饰为 抽象类
abstract class Animal {
// abstract 将 makeSound 方法修饰为抽象方法, 抽象方法没有方法体也就是 {}
public abstract void makeSound();
// 具体方法
public void eat() {
System.out.println("This animal is eating.");
}
}
// 子类实现抽象方法
class Dog extends Animal {
@Override
// 抽象类Animal 的方法 makeSound 必须在 子类 Dog 中实现,除非 Dog 类也是抽象类
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): 可以理解为 接口是类中所有方法都为抽象方法的类
接口是一种完全抽象的类,它只包含方法签名和常量,不包含任何具体实现。一个类可以实现多个接口
,并提供这些接口中所有抽象方法的具体实现