今天就跟大家聊聊有關(guān)java中接口與抽象類有什么不同,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)服務(wù)緊隨時代發(fā)展步伐,進行技術(shù)革新和技術(shù)進步,經(jīng)過十多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進行成都網(wǎng)站建設(shè)、做網(wǎng)站、建設(shè)、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。詳解java中接口與抽象類的區(qū)別
1.abstract class 在 Java 語言中表示的是一種繼承關(guān)系,一個類只能使用一次繼承關(guān)系。但是,一個類卻可以實現(xiàn)多個interface。
2.在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的,不過在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設(shè)計理念不同。其實abstract class表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系。
4.實現(xiàn)抽象類和接口的類必須實現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實現(xiàn)方法。
5.接口中定義的變量默認是public static final 型,且必須給其初值,所以實現(xiàn)類中不能重新定義,也不能改變其值。
6.抽象類中的變量默認是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.接口中的方法默認都是 public,abstract 類型的。
結(jié)論
abstract class 和 interface 是 Java語言中的兩種定義抽象類的方式,它們之間有很大的相似性。但是對于它們的選擇卻又往往反映出對于問題領(lǐng)域中的概 念本質(zhì)的理解、對于設(shè)計意圖的反映是否正確、合理,因為它們表現(xiàn)了概念間的不同的關(guān)系(雖然都能夠?qū)崿F(xiàn)需求的功能)。這其實也是語言的一種的慣用法,希望讀者朋友能夠細細體會。
主要不同點:
1.單繼承與多繼承
2.抽象類可以有自己的實現(xiàn)方法,有非抽象方法,數(shù)據(jù)變量可以不是public的,接口的方法都是public的,沒有自己的實利域,不能自己實現(xiàn)方法,方法都是抽象的,只能有靜態(tài)數(shù)據(jù)。
3.設(shè)計意圖,一個是一種抽象,一個是實現(xiàn)我能干什么的功能。
看完上述內(nèi)容,你們對java中接口與抽象類有什么不同有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。