Java 中的抽象类可以实例化吗?(超详细)

更新时间 2023-04-03 20:04:04

Java 中的抽象类不能被实例化,即不能直接通过抽象类创建对象,否则会编译错误。只有通过继承抽象类并实现其抽象方法,才能创建该抽象类的实例。

以下是一个演示代码:

// 抽象类
abstract class Shape {
    protected String color;

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

    public abstract double getArea();
}

class Circle extends Shape {
    private double radius;

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

    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

public class Main {
    public static void main(String[] args) {
        Shape shape = new Circle("red", 2.0);
        System.out.println("Shape color: " + shape.color);
        System.out.println("Shape area: " + shape.getArea());
    }
}

在上面的代码中,Shape 是一个抽象类,其中定义了一个抽象方法 getArea(),并且包含一个实例变量 color。Circle 类继承了 Shape 类,并实现了 getArea() 方法。在 Main 类中,通过 Shape 类的引用指向 Circle 类的实例对象,并输出了该对象的 color 属性和通过 getArea() 方法计算的面积。可以看到,虽然不能直接通过 Shape 类创建对象,但是通过抽象类的引用指向其子类的实例对象,实现了多态性的应用。