簡體   English   中英

為什么接口和抽象方法無法實例化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM