我们可以在 Java 中创建抽象类的对象吗?
javaobject oriented programmingprogramming更新于 2024/5/12 0:51:00
不,我们不能创建抽象类的对象。但我们可以创建抽象类的引用变量。引用变量用于引用派生类(抽象类的子类)的对象。
抽象类意味着隐藏实现并向用户显示函数定义,这被称为抽象类。如果我们知道需求和部分实现,Java 抽象类可以具有实现默认行为的实例方法,我们可以选择抽象类。
示例
abstract class Diagram { double dim1; double dim2; Diagram(double a, double b) { dim1 = a; dim2 = b; } // area 现在是一个抽象方法 abstract double area(); } class Rectangle extends Diagram { Rectangle(double a, double b) { super(a, b); } // 覆盖矩形的 area double area() { System.out.println("Inside Area for Rectangle."); return dim1 * dim2; } } class Triangle extends Diagram { Triangle(double a, double b) { super(a, b); } // 覆盖三角形的面积 double area() { System.out.println("Inside Area for Triangle."); return dim1 * dim2 / 2; } } public class Test { public class Test { public static void main(String args[]) { // Diagram d = new Diagram(10, 10); // illegal now 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("Area of Triangle is:" + diagRef.area()); } }
在上面的例子中,我们不能创建 Diagram 类型的对象,但我们可以创建一个 Diagram 类型的引用变量。这里我们创建了一个 Diagram 类型的引用变量,Diagram 类引用变量用于引用 Rectangle 和 Triangle 类的对象。
输出
Inside Area for Rectangle. Area of Rectangle is: 45.0 Inside Area for Triangle. Area of Triangle is:40.0