Java 中的抽象类可以实例化吗?(超详细)
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 类创建对象,但是通过抽象类的引用指向其子类的实例对象,实现了多态性的应用。