抽象类实现接口时可不实现其方法,只需用abstract声明;子类必须实现接口方法、抽象类声明的抽象方法及父类未实现的抽象方法。

抽象类实现接口时,不需要实现接口中的所有方法,只需声明这些方法(用 abstract 修饰),具体实现留给子类完成。这是抽象类区别于普通类的关键点。
语法结构:abstract class + implements
抽象类通过 implements 关键字声明实现某个(或多个)接口,格式如下:
abstract class Animal implements Runnable, Swimmable {
// 可以不实现 run() 和 swim() 方法
abstract void makeSound(); // 自定义抽象方法
// 也可以选择性提供部分默认实现
void sleep() {
System.out.println("Sleeping...");
}
}
必须处理接口中所有抽象方法
接口里的每个方法默认是 public abstract 的。抽象类若未实现它们,就必须用 abstract 显式声明同名、同参数、同返回类型的方法:
- 方法签名(名称、参数列表、返回类型)必须与接口完全一致
- 访问修饰符只能是 public(不能用 protected 或 private)
- 不能加 final 或 static
可以同时继承父类并实现接口
Java 不支持多继承类,但允许一个抽象类在继承一个父类的同时实现多个接口:
abstract class Bird extends Animal implements Flyable, Singable {
// 继承 Animal,同时实现 Flyable 和 Singable 接口
abstract void fly(); // 来自 Flyable
abstract void sing(); // 来自 Singable
}
子类必须完成全部未实现的方法
当具体子类继承该抽象类时,它必须实现:
– 接口里原本的方法(如 run)
– 抽象类自己声明的抽象方法(如 makeSound)
– 父类中未实现的抽象方法
class Dog extends Animal {
@Override
public void run() { // 实现 Runnable 接口方法
System.out.println("Dog is running");
}
@Override
void makeSound() { // 实现 Animal 自己的抽象方法
System.out.println("Woof!");
}
}










