我们可以用Java创建抽象类的对象吗?
不,我们不能创建抽象类的对象。但是我们可以创建一个抽象类的引用变量。引用变量用于引用派生类(抽象类的子类)的对象。
抽象类意味着将实现隐藏起来并向用户显示函数定义,这被称为抽象类。如果我们知道要求,则Java抽象类可以具有实现默认行为的实例方法,并且可以部分实现抽象类。
示例
abstract class Diagram {
double dim1;
double dim2;
Diagram(double a, double b) {
dim1 = a;
dim2 = b;
}
//区域现在是一种抽象方法
abstract double area();
}
class Rectangle extends Diagram {
Rectangle(double a, double b) {
super(a, b);
}
//覆盖矩形的区域
double area() {
System.out.println("矩形的内部区域。");
return dim1 * dim2;
}
}
class Triangle extends Diagram {
Triangle(double a, double b) {
super(a, b);
}
//覆盖三角形的区域
double area() {
System.out.println("三角形的内部区域。");
return dim1 * dim2 / 2;
}
}
public class Test {
public static void main(String args[]) {
//图d=新图(10,10);//现在非法
Rectangle r = new Rectangle(9, 5);
Triangle t = new Triangle(10, 8);
Diagram diagRef; // This is OK, no object is created
diagRef = r;
System.out.println("Area of Rectangle is: " + diagRef.area());
diagRef = t;
System.out.println("三角形的面积是:" + diagRef.area());
}
}在上面的示例中,我们无法创建Diagram类型的对象,但可以创建Diagram类型的引用变量。在这里,我们创建了一个类型为Diagram的引用变量,并且Diagram类的引用变量用于引用Rectangle和Triangle类的对象。
输出结果
矩形的内部区域。 Area of Rectangle is: 45.0 三角形的内部区域。 三角形的面积是:40.0