抽象方法
-
定义:抽象方法是一个没有实现的方法,即没有方法体(没有大括号
{}
和其中的代码)。 -
作用:抽象方法的主要作用是为子类提供一个规范或接口,强制子类必须实现这个方法。
-
语法:在 Java 中,抽象方法通过
abstract
关键字来定义。
抽象类
-
定义:抽象类是一个包含抽象方法的类。抽象类不能被实例化,即不能创建它的对象实例。
-
作用:抽象类的主要作用是作为其他类的基类,提供一些公共的接口和实现,子类可以继承和扩展这些接口和实现。
-
语法:在 Java 中,抽象类通过
abstract
关键字来定义。
示例代码
假设我们有一个抽象类 Shape
,它有一个抽象方法 calculateArea
(用于计算形状的面积)和一个具体方法 describe
(用于描述形状):
// 抽象类
public abstract class Shape {
// 抽象方法,没有方法体,必须由子类实现
public abstract double calculateArea();
// 具体方法,有方法实现
public void describe() {
System.out.println("This is a shape.");
}
}
具体的形状类(如 Circle
和 Rectangle
)继承并实现了 Shape
类:
// 圆形类,继承 Shape 并实现 calculateArea 方法
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
// 矩形类,继承 Shape 并实现 calculateArea 方法
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double calculateArea() {
return width * height;
}
}
使用示例
public class Main {
public static void main(String[] args) {
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(4, 6);
System.out.println("Circle area: " + circle.calculateArea());
System.out.println("Rectangle area: " + rectangle.calculateArea());
circle.describe(); // 继承自 Shape 的具体方法
rectangle.describe(); // 继承自 Shape 的具体方法
}
}
总结
- 抽象方法:没有实现的方法(没有方法体),用于强制子类必须实现该方法。
- 抽象类:包含抽象方法的类,不能被实例化,用于提供公共接口和实现。