Java 抽象类

在 Java 中,抽象类(Abstract Class)是一种特殊的类,它不能被直接实例化,主要用于作为其他类的基类(父类),封装子类的共性特征并定义必须实现的规范。

一、抽象类的定义

抽象类通过 abstract 关键字修饰,语法格式如下:

abstract class 类名 {

// 成员变量

// 普通方法(有方法体)

// 抽象方法(无方法体,用abstract修饰)

}

二、抽象类的核心特点

不能实例化抽象类无法通过 new 关键字创建对象,只能作为父类被继承。

可以包含抽象方法抽象方法是没有方法体的方法,用 abstract 修饰,格式为:abstract 返回值类型 方法名(参数列表);抽象方法的作用是定义子类必须实现的规范,子类必须重写父类所有的抽象方法(除非子类也是抽象类)。

可以包含普通成员抽象类可以有普通方法(带方法体)、成员变量、构造方法(供子类调用)等。

单继承限制一个类只能继承一个抽象类(Java 单继承特性),但抽象类可以实现多个接口。

三、抽象类的使用场景

当多个类存在共性特征(属性或方法),但部分行为(方法)无法在父类中具体实现时,可将父类定义为抽象类。

例如:几何图形(圆形、矩形等)都有 “计算面积” 的行为,但具体计算方式不同,可将 “图形” 定义为抽象类,“计算面积” 定义为抽象方法。

四、示例代码

下面通过 “图形计算面积” 的例子展示抽象类的用法:

// 抽象类:图形

abstract class Shape {

// 普通成员变量:颜色

String color;

// 构造方法(供子类调用)

public Shape(String color) {

this.color = color;

}

// 普通方法:获取颜色

public String getColor() {

return color;

}

// 抽象方法:计算面积(子类必须实现)

public abstract double getArea();

}

// 子类:圆形(继承抽象类Shape)

class Circle extends Shape {

double radius; // 半径

public Circle(String color, double radius) {

super(color); // 调用父类构造方法

this.radius = radius;

}

// 必须重写抽象方法getArea()

@Override

public double getArea() {

return Math.PI * radius * radius;

}

}

// 子类:矩形(继承抽象类Shape)

class Rectangle extends Shape {

double length; // 长

double width; // 宽

public Rectangle(String color, double length, double width) {

super(color);

this.length = length;

this.width = width;

}

// 必须重写抽象方法getArea()

@Override

public double getArea() {

return length * width;

}

}

// 测试类

public class Test {

public static void main(String[] args) {

// 抽象类不能实例化,以下代码会报错:

// Shape shape = new Shape("红色");

// 通过子类实例化,并调用方法

Shape circle = new Circle("蓝色", 2.0);

System.out.println("圆形面积:" + circle.getArea()); // 输出:12.566...

Shape rectangle = new Rectangle("红色", 3.0, 4.0);

System.out.println("矩形面积:" + rectangle.getArea()); // 输出:12.0

}

}

五、抽象类 vs 接口

特性抽象类接口(Java 8+)

关键字

abstract class

interface

继承 / 实现方式

单继承(extends)

多实现(implements)

方法类型

可包含抽象方法和普通方法

可包含抽象方法、默认方法、静态方法

成员变量

可包含任意成员变量

只能是常量(public static final)

构造方法

有构造方法(供子类调用)

无构造方法

总结

抽象类是 Java 中实现代码复用和规范定义的重要机制,它通过抽象方法约束子类的行为,同时通过普通方法封装共性逻辑,是实现多态的重要手段。

posted on

2025-09-16 08:47

coding博客

阅读(87)

评论(0)

收藏

举报