在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。
抽象類往往用來表徵我們在對問題領域進行分析、 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它們例項化(拿不出乙個具體的東西)所以稱之為抽象。
比如:我們要描述「水果」,它就是乙個抽象,它有質量、體積等一些共性(水果有質量),但又缺乏特性(蘋果、橘子都是水果,它們有自己的特性),我們拿不出唯一一種能代表水果的東西(因為蘋果、橘子都不能代表水果),可用抽象類來描述它,所以抽象類是不能夠例項化的。當我們用某個類來具體描述「蘋果」時,這個類就可以繼承描述「水果」的抽象類,我們都知道「蘋果」是一種「水果」。
在物件導向領域,抽象類主要用來進行型別隱藏。我們可以構造出乙個固定的一組行為的抽象描述,但是這組行為卻能夠有任意個可能的具體實現方式。這個抽象描述就是抽象類,而這一組任意個可能的具體實現則表現為這個抽象類的所有派生類。
介面和抽象類中的所有抽象方法不能有具體實現,而應在它們的子類中實現所有的抽象方法(要有函式體,哪怕裡是空的),java的設計者可能為抽象方法的靈活性考慮,每個子類可根據自己的需要來實現抽象方法。
抽象類(abstract class)的定義方式如下:
public abstract class abstractclass //裡面至少有乙個抽象方法
public void method3()
}
抽象類(abstract class)的定義方式如下:
public abstract class abstractclass //裡面至少有乙個抽象方法
public void method3()
}
簡言之抽象類是一種功能不全的類,介面只是乙個抽象方法宣告和靜態不能被修改的資料的集合,兩者都不能被例項化。
從某種意義上說,介面是一種特殊形式的抽象類,在java語言中抽象類表示的是一種繼承關係,乙個類只能繼承繼承乙個抽象類,而乙個類卻可以實現多個介面。在許多情況下,介面確實可以代替抽象類,如果你不需要刻意表達屬性上的繼承的話。
java中抽象類和介面的區別
1 概念 抽象類 abstract class 宣告方法的存在但不去實現它的類叫做抽象類。抽象類中可以有實現了的方法,也可以沒有實現了的方法 抽象類中可以沒有抽象的方法,但有抽象方法的類一定是抽象類。抽象類與普通類最大的區別是它不能被直接例項化,只能通過子類間接例項化。介面 inte ce 是抽象類...
JAVA 中 抽象類和介面的區別
含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件,含有abstract的方法的類必須定義為abstract class abstract class 裡的方法不必是抽象的,抽象來中定義抽象方法必須放在具體子類中實現,所以呀,不能有抽象的構造方法或抽象的靜態方法,...
Java中抽象類和介面的區別
區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 區別二,抽象類在定義型別方法的時候,可以給出方法的實現部分,也可以不給出 而對於介面...