抽象方法是用abstract关键字声明且无实现的方法,必须由子类重写。它只能存在于抽象类或接口中,如public abstract void doSomething();当子类继承抽象类或实现接口时,需提供具体实现,例如Dog类重写Animal类的makeSound()方法输出"Woof!",或Circle类实现Drawable接口的draw()方法打印"Drawing a circle"。子类必须实现所有继承的抽象方法,否则须声明为抽象类。重写时方法签名必须一致,访问修饰符不能更严格,建议使用@Override注解以确保正确性。自Java 8起,接口可含默认和静态方法,但普通方法仍需实现。抽象方法本质上是一种契约,子类负责履行该契约完成具体逻辑。
在Java中,抽象方法的具体实现是通过继承抽象类或实现接口的子类来完成的。抽象方法本身没有方法体,必须由子类重写并提供具体逻辑。
抽象方法使用 abstract 关键字声明,不能包含实现(即没有大括号和具体代码)。它只能存在于抽象类或接口中。
例如:public abstract void doSomething();
当一个类继承了包含抽象方法的抽象类时,它必须为所有未实现的抽象方法提供具体实现,除非该子类也声明为抽象类。
步骤如下:
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");
}}
实现抽象方法时需要注意以下几点: