我們可以在 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP