抽象類為什麼不能建立物件?

2021-10-08 06:32:54 字數 1149 閱讀 8364

目錄

抽象模擬較區別

建立物件

在物件導向的概念中,所有的物件都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。

抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。 

比如,在乙個圖形編輯軟體的分析設計過程中,就會發現問題領域存在著圓、三角形這樣一些具體概念,它們是不同的,但是它們又都屬於形狀這樣乙個概念,形狀這個概念在問題領域並不是直接存在的,它就是乙個抽象概念。而正是因為抽象的概念在問題領域沒有對應的具體概念,所以用以表徵抽象概念的抽象類是不能夠例項化的。

與具體模擬較

抽象類不能直接例項化,並且對抽象類使用 new 運算子會導致編譯時錯誤。雖然一些變數和值在編譯時的型別可以是抽象的,但是這樣的變數和值必須或者為 null,或者含有對非抽象類的例項的引用(此非抽象類是從抽象類派生的)。

允許(但不要求)抽象類包含抽象成員。

抽象類不能被密封。

與介面比較

抽象類表示該類中可能已經有一些方法的具體定義,但是介面就僅僅只能定義各個方法的介面(方法名,引數列表,返回型別),並不關心具體細節。

介面是引用型別的,和抽象類的相似之處有三點:

不能例項化;

包含未實現的方法宣告;

派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員)。 [2]

類可以實現無限個介面,但僅能從乙個抽象(或任何其他型別)類繼承,從抽象類派生的類仍可實現介面,從而得出介面是用來解決多重繼承問題的。

抽象類當中可以存在非抽象的方法,可介面不能,且它裡面的方法只是乙個宣告必須用public來修飾沒有具體實現的方法。

抽象類中的成員變數可以被不同的修飾符來修飾,可介面中的成員變數預設的都是靜態常量(static final)。

抽象類是物件的抽象,然而介面是一種行為規範。

抽象類尚未實現方法,所以不能建立物件。

建立物件去呼叫方法是指做明確的事情,而這個抽象方法並不明確,所以只有繼承抽象類去實現抽象方法才可以。

抽象類為什麼不能直接建立物件?

1.子類更具體,父類更抽象,直接建立父類物件本身沒有意義。2.如果建立的是父類物件再呼叫方法的時候,呼叫的父類中的方法,而非子類的方法,它違背了多型的這種思想和設計 3.因為父類引用指向子類物件時,呼叫的方法是子類重寫的方法,一般父類中的描述不夠具體,並不是說抽象類的構造方法沒有意義,那麼在建立子類...

抽象類為什麼不能例項化(new)

抽象類為什麼不能例項化 new 答案是 規定。第一點 回歸問題最初,我們為什麼要例項化?我們先逆向思維來考慮,從物件導向的思想來看 我們需要完成實現乙個功能,而功能中的方法,是由物件來呼叫的,因此我們需要物件,因此我們需要例項化。那麼回歸本問題,什麼是抽象類?抽象 就是不具體的意思。類是對物件的具體...

抽象類定義 為什麼要使用抽象類

為什麼要使用抽象類?有什麼好處?答案 1 現實中一些父類中的方法沒必要寫 各個子類中的方法會有所不同 所以沒必要在父類中寫 2 看被人 時候會注意這是抽象方法 會有個提示作用 3 當看到乙個類是抽象的,要關心他的抽象方法,因為他的子類一定會重寫他,然後去找抽象類的引用,會有多型性的體現 4 物件導向...