抽象方法是用abstract关键字声明且无实现的方法,必须由子类重写。它只能存在于抽象类或接口中,如public abstract void doSomething();当子类继承抽象类或实现接口时,需提供具体实现,例如Dog类重写Animal类的makeSound()方法输出"Woof!",或Circle类实现Drawable接口的draw()方法打印"Drawing a circle"。子类必须实现所有继承的抽象方法,否则须声明为抽象类。重写时方法签名必须一致,访问修饰符不能更严格,建议使用@Override注解以确保正确性。自Java 8起,接口可含默认和静态方法,但普通方法仍需实现。抽象方法本质上是一种契约,子类负责履行该契约完成具体逻辑。

在Java中,抽象方法的具体实现是通过继承抽象类或实现接口的子类来完成的。抽象方法本身没有方法体,必须由子类重写并提供具体逻辑。
什么是抽象方法
抽象方法使用 abstract 关键字声明,不能包含实现(即没有大括号和具体代码)。它只能存在于抽象类或接口中。
例如:public abstract void doSomething();
通过继承抽象类实现抽象方法
当一个类继承了包含抽象方法的抽象类时,它必须为所有未实现的抽象方法提供具体实现,除非该子类也声明为抽象类。
立即学习“Java免费学习笔记(深入)”;
步骤如下:
- 定义一个抽象类,包含一个或多个抽象方法
- 创建子类继承该抽象类
- 在子类中使用 @Override 注解重写抽象方法,并添加具体逻辑
abstract class Animal {
abstract void makeSound();}class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Woof!");
}}
通过实现接口实现抽象方法
接口中的方法默认是抽象的(Java 8以前),实现接口的类必须实现接口中所有方法。
从Java 8开始,接口可以有默认方法和静态方法,但普通声明的方法仍需在实现类中提供具体实现。
示例代码:
interface Drawable {
void draw();}class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle");
}}
注意事项
实现抽象方法时需要注意以下几点:
- 访问修饰符不能比抽象方法更严格(例如抽象方法是 protected,实现时不能用 private)
- 方法签名必须完全一致(名称、参数列表、泛型等)
- 建议使用 @Override 注解,有助于编译器检查是否正确重写
- 如果子类不实现所有抽象方法,那么该子类必须声明为 abstract










