簡述java抽象類與接口的異同點

簡述java抽象類與接口的異同點

長沙中公優(yōu)就業(yè)      2022-05-05 11:14:01     94

簡述java抽象類與接口的異同點,  今天長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編介紹“java抽象類與接口的異同點”,希望通過此文能夠幫助到正在學(xué)習(xí)java的零基礎(chǔ)學(xué)員,

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

  

今天長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編介紹“java抽象類與接口的異同點”,希望通過此文能夠幫助到正在學(xué)習(xí)java的零基礎(chǔ)學(xué)員,下面就隨小編一起看看java抽象類與接口的異同點是什么?



一、抽象類: (關(guān)鍵字abstract)


java抽象類定義


  在面向?qū)ο蟮母拍钪校械膶ο蠖际峭ㄟ^類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。


  抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構(gòu)造方法的訪問方式和普通類一樣。


  由于抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。也是因為這個原因,通常在設(shè)計階段決定要不要設(shè)計抽象類。


  父類包含了子類集合的常見的方法,但是由于父類本身是抽象的,所以不能使用這些方法。


  在Java中抽象類表示的是一種繼承關(guān)系,一個類只能繼承一個抽象類,而一個類卻可以實現(xiàn)多個接口。



  為什么會出現(xiàn)抽象類?


  ??在不斷抽取過程中,將共性內(nèi)容中的方法聲明抽取,但是方法內(nèi)容不一樣,沒有抽取,這時抽取到的方法,并不具體,需要被指定關(guān)鍵字abstract所標(biāo)示,聲明為抽象方法。


  ??抽象方法所在類一定要標(biāo)示為抽象類,也就是說該類需要被abstract關(guān)鍵字所修飾。



  抽象類的特點:


  1:抽象方法只能定義在抽象類中,抽象類和抽象方法必須由abstract關(guān)鍵字修飾(可以描述類和方法,不可以描述變量) 。


  2:抽象方法只定義方法聲明,并不定義方法實現(xiàn)。


  3:抽象類不可以被創(chuàng)建對象 ( 實例化 ) 。


  4:抽象類必須由其子類覆蓋了所有的抽象方法后,該子類才可以實例化。否則,該子類還是抽象類。



  抽象類的細節(jié):


  1、抽象類中是否有構(gòu)造函數(shù)?


  ??有,用于給子類對象進行初始化。


  2、抽象類中是否可以定義非抽象方法?


  可以。其實,抽象類和一般類沒有太大的區(qū)別,都是在描述事物,只不過抽象類在描述事物時,有些功能不具體。所以抽象類和一般類在定義上,都是需要定義屬性和行為的。只不過,比一般類多了一個抽象函數(shù)。而且比一般類少了一個創(chuàng)建對象的部分。


  3、抽象關(guān)鍵字 abstract 和哪些關(guān)鍵字不可以共存?


  ??private 。抽象方法需要被子類方法覆蓋才可以使用,private修飾的方法不可以被子類繼承。


  ??static 。static和abstract同時修飾一個方法時,被static修飾的方法,可以直接被類名調(diào)用,此方法沒有內(nèi)容,調(diào)用此方法沒有意義。


  ??final 。當(dāng)final和abstract同時修飾一個方法時,abstract修飾的方法必須被子類覆蓋才能使用,而被final修飾的方法不能被覆蓋。


  4、抽象類中可不可以不定義抽象方法?


  ??可以。不定義抽象方法目的是不讓抽象類創(chuàng)建對象。


  5、抽象類一定是父類嗎?


  ??是的,因為需要被其子類覆蓋其所有的抽象方法才能使用。



  二、接口:(關(guān)鍵字interface).


  為什么會出現(xiàn)接口?


  ??當(dāng)一個抽象類中,所有的方法都是抽象方法時,這時可以將該抽象類用另一種形式定義和表示,就引入了接口的概念。


  1、是用關(guān)鍵字 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、類與類之間存在著繼承關(guān)系,類與接口之間存在的是實現(xiàn)關(guān)系。繼承用 extends ;實現(xiàn)用 implements ;


  5、接口和類不一樣的地方,就是,接口可以被多實現(xiàn) ,這就是多繼承改良后的結(jié)果。java 將多繼承機制通過多實現(xiàn)來體現(xiàn)。


  6、一個類在繼承另一個類的同時,還可以實現(xiàn)多個接口。所以接口的出現(xiàn)避免了單繼承的局限性。還可以將類進行功能的擴展。


  7、其實 java 中是有多繼承的。接口與接口之間存在著繼承關(guān)系,接口可以多繼承接口。



  接口都用于設(shè)計上,設(shè)計上的特點:


  1、接口是對外提供暴露的規(guī)則。


  2、接口是功能的擴展。


  3、接口的出現(xiàn)降低了耦合性。



  抽象類與接口異同點:


  抽象類:一般用于描述一個體系單元,將一組共性內(nèi)容進行抽取。特點:可以在類中定義抽象內(nèi)容讓子類實現(xiàn),可以定義非抽象內(nèi)容讓子類直接使用。它里面定義的都是一些體系中的基本內(nèi)容。


 接口: 一般用于定義對象的擴展功能,是在繼承之外還需這個對象具備的一些功能。



  抽象類和接口的共性:都是不斷向上抽取的結(jié)果。


  抽象類和接口的區(qū)別:


  1、抽象類只能被繼承,而且只能單繼承。


  接口需要被實現(xiàn),而且可以多實現(xiàn)。


  2、抽象類中可以定義非抽象方法,子類可以直接繼承使用。


  接口中都有抽象方法,需要子類去實現(xiàn)。


  3、抽象類使用的是 is a 關(guān)系。


  接口使用的 like a 關(guān)系。


  4、抽象類的成員修飾符可以自定義。


  接口中的成員修飾符是固定的。全都是public的。



以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編介紹的“java抽象類與接口的異同點”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。


相關(guān)免費視頻教程推薦——java菜鳥教程下載:


java接口使項目分層代碼實現(xiàn):http://www.bjpowernode.com/xiazai/2567.html


java接口使項目分層描述:http://www.bjpowernode.com/xiazai/2568.html


java面向接口編程:http://www.bjpowernode.com/xiazai/2569.html


java接口的應(yīng)用:http://www.bjpowernode.com/xiazai/2570.html


java接口與抽象類的異同點:http://www.bjpowernode.com/xiazai/2571.html


java接口說明:http://www.bjpowernode.com/xiazai/2572.html


java接口的定義與實現(xiàn):http://www.bjpowernode.com/xiazai/2575.html


培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。