![](/img/trans.png)
[英]If an abstract class can't be instantiated, why is the following possible?
[英]why interface and abstract methods can't be instantiated?
我無法弄清楚為什么在java中限制接口和抽象類的實例化。 我知道可以創建接口和抽象類的實現參考。 我很清楚,但為什么它不能被實例化? 有人請幫助我
接口和抽象類的要點是提供必須在具體類中實現的API。
例如,假設我聲明了這個接口:
public interface Foo
{
int bar();
}
想象一下,如果這是有效的代碼:
Foo foo = new Foo();
int x = foo.bar();
x
的價值是什么? 我們沒有在任何地方指定bar
的實現。 這是一個毫無意義的電話,沒有真正的實施來支持它。
如果你認為一個類是創建(實例化)實例的藍圖,就像房子的藍圖告訴你如何建造一個房子。 將界面視為房屋的平面圖 - 它是房屋的不完整視圖(規格)。 沒有足夠的細節來建造房子 - 它只是房間的輪廓。 抽象方法更糟糕 - 它只是一個房間的輪廓。
接口和抽象類不是具體類。 他們被貶低為不完整而不被創造。 您可以使用子類或實現類。
Abstract類是未完全實現的類。 您希望強制開發人員在他/她可以實例化之前實現該類的所有抽象部分。
接口是類必須遵守的合同。 因此,它無法實現。 例如,在插件系統的情況下定義一組類必須遵守的接口可能很重要:所有插件將共享相同的接口,因此可以互換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.