摘要:接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn),一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則必須聲明為抽象類。接口與類之間的關(guān)系類與類之間繼承關(guān)系,只能是單繼承,可以多層繼承。并且還繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口。
JAVA接口 1.什么是接口
接口在java編程語(yǔ)言中是一種抽象的類型,是抽象方法的集合,接口主要用interface來(lái)聲明,一個(gè)類通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法。接口不是類,它只包含類要實(shí)現(xiàn)的方法。如果實(shí)現(xiàn)某個(gè)接口的類是抽象類,那么這個(gè)類要定義接口中所有的方法。接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn),一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則必須聲明為抽象類。
2.接口與類之間的關(guān)系1.類與類之間:繼承關(guān)系,只能是單繼承,可以多層繼承。
2.類與接口之間的關(guān)系:實(shí)現(xiàn)關(guān)系,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)。并且還繼承一個(gè)類的
同時(shí)實(shí)現(xiàn)多個(gè)接口。
3.接口與接口之間的關(guān)系:繼承關(guān)系,可以單繼承,也可以多繼承。
1.接口不可以被實(shí)例化
2.實(shí)現(xiàn)類必須實(shí)現(xiàn)接口的所有方法
3.實(shí)現(xiàn)類可以實(shí)現(xiàn)多個(gè)接口
4.接口中的變量都是靜態(tài)常量
1.因?yàn)槔^承的實(shí)現(xiàn)原理決定了他只能被單繼承,但是可以多重繼承,但是如果出現(xiàn)某些內(nèi)容在多個(gè)父類當(dāng)中,這樣修改起來(lái)相當(dāng)麻煩。使用接口,可以做到立刻實(shí)現(xiàn),立刻使用。不需要實(shí)現(xiàn)時(shí),直接移除此接口就可以了。非常的方便。
2.父類引用指向子類對(duì)象
3.更容易實(shí)現(xiàn)搭建程序的框架
4.更容易實(shí)現(xiàn)切換
相同點(diǎn):
1.都是代表系統(tǒng)的抽象層
2.都不能被實(shí)例化
3.都能包含抽象方法
不同點(diǎn):
1.在抽象類中可以為部分方法提供默認(rèn)實(shí)現(xiàn),而接口中只能包含抽象方法,抽象類便于復(fù)用,接口便于代碼維護(hù)
2.一個(gè)類只能繼承一個(gè)直接的父類,但可以實(shí)現(xiàn)多個(gè)接口
實(shí)例1
public class Security extends Door implements CatEye, Fireproofing { @Override public void openCat() { System.out.println("打開(kāi)貓眼"); } @Override public void closeCat() { // TODO Auto-generated method stub System.out.println("關(guān)閉貓眼"); } @Override public void fireproofing() { // TODO Auto-generated method stub } @Override public void noFireproofing() { // TODO Auto-generated method stub } }
實(shí)例2
/** * 計(jì)算機(jī)類 * * @author Administrator * */ public class CP { private Cpu cpu; public Cpu getCpu() { return cpu; } public void setCpu(Cpu cpu) { this.cpu = cpu; } public EMS getEms() { return ems; } public void setEms(EMS ems) { this.ems = ems; } public HardDisk getHardDisk() { return hardDisk; } public void setHardDisk(HardDisk hardDisk) { this.hardDisk = hardDisk; } private EMS ems; private HardDisk hardDisk; public CP(Cpu cpu, EMS ems, HardDisk hardDisk) { super(); this.cpu = cpu; this.ems = ems; this.hardDisk = hardDisk; } public CP() { super(); // TODO Auto-generated constructor stub } public void show() { System.out.println("電腦的cpu是:" + getCpu().getCpuBrand() + "主頻是:" + getCpu().getFrequency()); System.out.println("硬盤(pán)容量是:" + getHardDisk().getHardDisk()); System.out.println("內(nèi)存的容量是:" + getEms().getEms()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72844.html
摘要:注意當(dāng)多個(gè)父接口中存在相同的默認(rèn)方法時(shí),子類中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡(jiǎn)易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無(wú)疑問(wèn),java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語(yǔ)言、編譯器、庫(kù)、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...
摘要:語(yǔ)法中接口可以包含實(shí)現(xiàn)方法,需要使用修飾,此類方法稱為默認(rèn)方法。核心特性接口默認(rèn)方法就介紹到這里了,后續(xù)小樂(lè)會(huì)繼續(xù)講述核心特性。 JAVA8已經(jīng)發(fā)布很久,是自java5(2004年發(fā)布)之后Oracle發(fā)布的最重要的一個(gè)版本。其中包括語(yǔ)言、編譯器、庫(kù)、工具和JVM等諸多方面的新特性,對(duì)于國(guó)內(nèi)外互聯(lián)網(wǎng)公司來(lái)說(shuō),Java8是以后技術(shù)開(kāi)發(fā)的趨勢(shì)。這里主要講解在開(kāi)發(fā)中幾個(gè)核心的新特性。(主要從...
摘要:首當(dāng)其沖的便是接口中的每個(gè)聲明必須是即便不指定也是,并且不能設(shè)置為非,詳細(xì)規(guī)則可參考可見(jiàn)性部分介紹。函數(shù)式接口有著不同的場(chǎng)景,并被認(rèn)為是對(duì)編程語(yǔ)言的一種強(qiáng)大的擴(kuò)展。抽象類與中的接口有些類似,與中支持默認(rèn)方法的接口更為相像。 原文鏈接:http://www.javacodegeeks.com/2015/09/how-to-design-classes-and-interfaces.htm...
摘要:雖然目前工作環(huán)境仍然以為主,不過(guò)目前已是大勢(shì)所趨了。標(biāo)準(zhǔn)函數(shù)式接口新的包定義旨在使用的廣泛函數(shù)式接口。這一改進(jìn)使得擁有了類似于多繼承的能力。 從Java8發(fā)布到現(xiàn)在有好幾年了,而Java9也提上發(fā)布日程了(沒(méi)記錯(cuò)的話好像就是這個(gè)月2017年7月,也許會(huì)再度跳票吧,不過(guò)沒(méi)關(guān)系,穩(wěn)定大于一切,穩(wěn)定了再發(fā)布也行),現(xiàn)在才開(kāi)始去真正學(xué)習(xí),說(shuō)來(lái)也是慚愧。雖然目前工作環(huán)境仍然以Java6為主,不過(guò)...
摘要:標(biāo)識(shí)符與關(guān)鍵字標(biāo)識(shí)符指類名包括接口枚舉抽象類方法名變量常量名包名等可以自定義的字符組合。如果基本功能在不斷改變,那么就需要使用抽象類。抽象類可以實(shí)現(xiàn)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對(duì)JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所結(jié),不管...
Java? 教程 Java教程是為JDK 8編寫(xiě)的,本頁(yè)面中描述的示例和實(shí)踐沒(méi)有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書(shū)籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買(mǎi)。 入門(mén) 介紹Java技術(shù)和安裝Java開(kāi)發(fā)軟件并使用...
閱讀 2926·2019-08-30 15:55
閱讀 2919·2019-08-30 15:53
閱讀 2365·2019-08-26 13:47
閱讀 2645·2019-08-26 13:43
閱讀 3232·2019-08-26 13:33
閱讀 2875·2019-08-26 11:53
閱讀 1852·2019-08-23 18:35
閱讀 876·2019-08-23 17:16