在 Java 中,抽象类是一种特殊的类,它不能被实例化,主要用于定义一个类的抽象特征和行为。抽象类可以包含抽象方法,这些方法在抽象类中没有具体的实现,而是由具体的子类来实现。使用关键字 abstract 可以定义抽象类和抽象方法。

以下是关于 Java 抽象类的一些基本概念和示例:

1. 定义抽象类:
abstract class Shape {
    String color;

    Shape(String color) {
        this.color = color;
    }

    abstract void draw(); // 抽象方法
}

在上面的例子中,Shape 是一个抽象类,它包含一个抽象方法 draw 和一个属性 color。

2. 继承抽象类:

子类继承抽象类,并提供具体的实现。
class Circle extends Shape {
    double radius;

    Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

    @Override
    void draw() {
        System.out.println("Drawing a " + color + " circle with radius " + radius);
    }
}

在上面的例子中,Circle 是一个继承自 Shape 的子类,它提供了对抽象方法 draw 的具体实现。

3. 使用抽象类:
public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle("red", 5.0);
        circle.draw(); // 调用的是 Circle 类中的 draw 方法
    }
}

在上面的例子中,通过创建 Circle 类的实例,并用 Shape 类的引用来引用它,实现了对抽象类的多态使用。

4. 抽象类的特点:

  •  抽象类不能被实例化,只能被用作父类。

  •  抽象类可以包含抽象方法和具体方法。

  •  子类继承抽象类时,必须实现抽象类中的所有抽象方法,除非子类也是抽象类。


5. 抽象类 vs. 接口:

  •  抽象类可以包含字段(属性),而接口不能。

  •  类只能继承一个抽象类,但可以实现多个接口。

  •  接口支持多继承,而抽象类只能单继承。

  •  抽象类的方法可以有访问修饰符,而接口的方法默认是 public。


抽象类主要用于定义类的层次结构,提供一些共同的方法和属性,而具体的实现由子类完成。


转载请注明出处:http://www.pingtaimeng.com/article/detail/427/Java