我們可以在 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

更新於: 2020 年 2 月 6 日

14K+ 瀏覽量

開啟您的 職業生涯

完成課程並獲得認證

開始學習
廣告