更新時間:2019-09-12 10:46:01 來源:動力節(jié)點 瀏覽5317次
今天動力節(jié)點java培訓機構小編介紹“java抽象類與接口的異同點”,希望通過此文能夠幫助到正在學習java的零基礎學員,下面就隨小編一起看看java抽象類與接口的異同點是什么?
一、抽象類: (關鍵字abstract)
java抽象類定義
在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。
由于抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。也是因為這個原因,通常在設計階段決定要不要設計抽象類。
父類包含了子類集合的常見的方法,但是由于父類本身是抽象的,所以不能使用這些方法。
在Java中抽象類表示的是一種繼承關系,一個類只能繼承一個抽象類,而一個類卻可以實現(xiàn)多個接口。
為什么會出現(xiàn)抽象類?
??在不斷抽取過程中,將共性內容中的方法聲明抽取,但是方法內容不一樣,沒有抽取,這時抽取到的方法,并不具體,需要被指定關鍵字abstract所標示,聲明為抽象方法。
??抽象方法所在類一定要標示為抽象類,也就是說該類需要被abstract關鍵字所修飾。
抽象類的特點:
1:抽象方法只能定義在抽象類中,抽象類和抽象方法必須由abstract關鍵字修飾(可以描述類和方法,不可以描述變量) 。
2:抽象方法只定義方法聲明,并不定義方法實現(xiàn)。
3:抽象類不可以被創(chuàng)建對象 ( 實例化 ) 。
4:抽象類必須由其子類覆蓋了所有的抽象方法后,該子類才可以實例化。否則,該子類還是抽象類。
抽象類的細節(jié):
1、抽象類中是否有構造函數(shù)?
??有,用于給子類對象進行初始化。
2、抽象類中是否可以定義非抽象方法?
可以。其實,抽象類和一般類沒有太大的區(qū)別,都是在描述事物,只不過抽象類在描述事物時,有些功能不具體。所以抽象類和一般類在定義上,都是需要定義屬性和行為的。只不過,比一般類多了一個抽象函數(shù)。而且比一般類少了一個創(chuàng)建對象的部分。
3、抽象關鍵字 abstract 和哪些關鍵字不可以共存?
??private 。抽象方法需要被子類方法覆蓋才可以使用,private修飾的方法不可以被子類繼承。
??static 。static和abstract同時修飾一個方法時,被static修飾的方法,可以直接被類名調用,此方法沒有內容,調用此方法沒有意義。
??final 。當final和abstract同時修飾一個方法時,abstract修飾的方法必須被子類覆蓋才能使用,而被final修飾的方法不能被覆蓋。
4、抽象類中可不可以不定義抽象方法?
??可以。不定義抽象方法目的是不讓抽象類創(chuàng)建對象。
5、抽象類一定是父類嗎?
??是的,因為需要被其子類覆蓋其所有的抽象方法才能使用。
二、接口:(關鍵字interface).
為什么會出現(xiàn)接口?
??當一個抽象類中,所有的方法都是抽象方法時,這時可以將該抽象類用另一種形式定義和表示,就引入了接口的概念。
1、是用關鍵字 interface 定義的。
2、接口中包含的成員,最常見的有全局常量、抽象方法。
注意:接口中的成員都有固定的修飾符。
成員變量: public static final 。
成員方法: public abstract 。
接口的表現(xiàn)形式:
interface Inter
{
public static final int x = 3;
public abstract void show();
}
3、接口中有抽象方法,說明接口不可以實例化 。接口的子類必須實現(xiàn)了接口中所有的抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。
4、類與類之間存在著繼承關系,類與接口之間存在的是實現(xiàn)關系。繼承用 extends ;實現(xiàn)用 implements ;
5、接口和類不一樣的地方,就是,接口可以被多實現(xiàn) ,這就是多繼承改良后的結果。java 將多繼承機制通過多實現(xiàn)來體現(xiàn)。
6、一個類在繼承另一個類的同時,還可以實現(xiàn)多個接口。所以接口的出現(xiàn)避免了單繼承的局限性。還可以將類進行功能的擴展。
7、其實 java 中是有多繼承的。接口與接口之間存在著繼承關系,接口可以多繼承接口。
接口都用于設計上,設計上的特點:
1、接口是對外提供暴露的規(guī)則。
2、接口是功能的擴展。
3、接口的出現(xiàn)降低了耦合性。
抽象類與接口異同點:
抽象類:一般用于描述一個體系單元,將一組共性內容進行抽取。特點:可以在類中定義抽象內容讓子類實現(xiàn),可以定義非抽象內容讓子類直接使用。它里面定義的都是一些體系中的基本內容。
接口: 一般用于定義對象的擴展功能,是在繼承之外還需這個對象具備的一些功能。
抽象類和接口的共性:都是不斷向上抽取的結果。
抽象類和接口的區(qū)別:
1、抽象類只能被繼承,而且只能單繼承。
接口需要被實現(xiàn),而且可以多實現(xiàn)。
2、抽象類中可以定義非抽象方法,子類可以直接繼承使用。
接口中都有抽象方法,需要子類去實現(xiàn)。
3、抽象類使用的是 is a 關系。
接口使用的 like a 關系。
4、抽象類的成員修飾符可以自定義。
接口中的成員修飾符是固定的。全都是public的。
以上就是動力節(jié)點java培訓機構小編介紹的“java抽象類與接口的異同點”的內容,希望對大家有幫助,更多java最新資訊請繼續(xù)關注動力節(jié)點java培訓機構官網(wǎng),每天會有精彩內容分享與你。
相關免費視頻教程推薦——java菜鳥教程下載:
java接口使項目分層代碼實現(xiàn):http://www.dabaquan.cn/xiazai/2567.html
java接口使項目分層描述:http://www.dabaquan.cn/xiazai/2568.html
java面向接口編程:http://www.dabaquan.cn/xiazai/2569.html
java接口的應用:http://www.dabaquan.cn/xiazai/2570.html
java接口與抽象類的異同點:http://www.dabaquan.cn/xiazai/2571.html
java接口說明:http://www.dabaquan.cn/xiazai/2572.html
java接口的定義與實現(xiàn):http://www.dabaquan.cn/xiazai/2575.html