我們可以在 Java 中建立一個抽象類的物件嗎?
不可以,我們不能建立一個抽象類的物件,但是我們可以建立一個抽象類的引用變數。引用變數用於引用派生類(抽象類的子類)的物件。
抽象類意味著隱藏實現,並向用戶顯示函式定義被稱為抽象類。如果我們知道要求和部分實現,Java 抽象類可以擁有實現預設行為的例項方法,我們可以使用抽象類。
示例
abstract class Diagram { double dim1; double dim2; Diagram(double a, double b) { dim1 = a; dim2 = b; } // area is now an abstract method abstract double area(); } class Rectangle extends Diagram { Rectangle(double a, double b) { super(a, b); } // override area for rectangle double area() { System.out.println("Inside Area for Rectangle."); return dim1 * dim2; } } class Triangle extends Diagram { Triangle(double a, double b) { super(a, b); } // override area for triangle double area() { System.out.println("Inside Area for Triangle."); return dim1 * dim2 / 2; } } 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
廣告