黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 詳細(xì)了解Java抽象類與接口

詳細(xì)了解Java抽象類與接口

更新時間:2020-05-27 16:14:52 來源:動力節(jié)點(diǎn) 瀏覽2468次

抽象類

使用了關(guān)鍵字abstract聲明的類叫作“抽象類”。如果一個類里包含了一個或多個抽象方法,類就必須指定成abstract(抽象)。“抽象方法”,屬于一種不完整的方法,只含有一個聲明,沒有方法主體。特征:

  • 抽象類是不完整的(可以理解為類中的方法并沒有完全實現(xiàn)),并且它只能用作基類。
  • 抽象類不能直接實例化,并且對抽象類使用new運(yùn)算符是編譯時錯誤。
  • 在繼承抽象類時,必須覆蓋該類中的每一個抽象方法

示例:設(shè)計一個門類,因為是普通門和指紋門開門的方式是不同的:普通門用鑰匙;指紋門可以輸入指紋、可以按密碼或者用鑰匙。但是,二者關(guān)門的方式都一樣(把門一堆就可以關(guān)上了)。這里就符合抽象類的設(shè)計思路,把開門設(shè)計成抽象方法,具體方法內(nèi)容交給子類去實現(xiàn);而把關(guān)門設(shè)計成普通方法,子類復(fù)用該方法就好。

詳細(xì)了解Java抽象類與接口

代碼實現(xiàn)如下:

public?abstract?class?Door{
	public?abstract?void?open();
	public?void?close(){
		System.out.println("關(guān)門!");
	}
}

public?class?CommonDoor?extends?Door?{

	@Override
	public?void?open()?{
		System.out.println("普通門用鑰匙開門。");	
	}
}

public?class?FingerprintDoor?extends?Door?{
	@Override
	public?void?open()?{
		System.out.println("指紋門用鑰匙、指紋、密碼都可以開門。");
	}
}

接口

Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同的行為(功能)。接口通過關(guān)鍵字interface來定義,類使用接口通過關(guān)鍵字implements來實現(xiàn)。例如:public class A implements B

特征:

  • 一個類可以實現(xiàn)多個接口,接口彌補(bǔ)了類的不能多繼承缺點(diǎn)。
  • Java接口本身沒有任何實現(xiàn),只描述行為,所以Java接口比Java抽象類更抽象化。
  • 接口不是類,不能使用new來實例化一個接口。
  • 接口中的方法可以有參數(shù)列表和返回類型,但不能有任何方法體。
  • 接口中可以包含字段,但是會被隱式的聲明為static和final。
  • 接口中的字段只是被存儲在該接口的靜態(tài)存儲區(qū)域內(nèi),而不屬于該接口。
  • 接口中的方法可以被聲明為public或不聲明,但結(jié)果都會按照public類型處理。
  • 實現(xiàn)一個接口時,需要將被定義的方法聲明為public類型,否則為默認(rèn)訪問類型,Java編譯器不允許這種情況。
  • 如果沒有實現(xiàn)接口中所有方法,那么創(chuàng)建的仍然是一個接口。
  • 擴(kuò)展一個接口來生成新的接口應(yīng)使用關(guān)鍵字extends,實現(xiàn)一個接口使用implements。

示例:

還是門這個類,除了普通門和指紋門,還有警報門,它除了具有開門關(guān)門的方法外,還可以實現(xiàn)告警功能,而告警功能并不具備門的普遍性,因此合理的做法是把告警設(shè)計成一個接口,當(dāng)有些門具備告警功能時就去實現(xiàn)告警接口。

詳細(xì)了解Java抽象類與接口

代碼實現(xiàn)如下:

public?interface?Alarm{
	public?void?alarm();
}

public?class?AlarmDoor?extends?Door?implements?Alarm?{
	@Override
	public?void?alarm()?{
		//?TODO?Auto-generated?method?stub
		System.out.println("警報門有告警功能。");
	}

	@Override
	public?void?open()?{
		System.out.println("警報門用鑰匙、指紋、密碼都可以開門。");
	}

}

面向接口編程的理解

在一個面向?qū)ο蟮南到y(tǒng)中,系統(tǒng)的各種功能是由許許多多的不同對象協(xié)作完成的。在這種情況下,各個對象內(nèi)部是如何實現(xiàn)自己的,對系統(tǒng)設(shè)計人員來講就不那么重要了;而各個對象之間的協(xié)作關(guān)系則成為系統(tǒng)設(shè)計的關(guān)鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統(tǒng)設(shè)計之初都是要著重考慮的,這也是系統(tǒng)設(shè)計的主要工作內(nèi)容。面向接口編程就是指按照這種思想來編程。“面向接口編程”中的“接口”可以說是一種從軟件架構(gòu)的角度、從一個更抽象的層面上指那種用于隱藏具體底層類和實現(xiàn)多態(tài)性的結(jié)構(gòu)部件。這里的接口是一種思想層面的用于實現(xiàn)多態(tài)性、提高軟件靈活性和可維護(hù)性的架構(gòu)部件,而具體語言中的“接口”是將這種思想中的部件具體實施到代碼里的手段。接口從更深層次的理解,應(yīng)是定義(規(guī)范,約束)與實現(xiàn)(名實分離的原則)的分離。接口的本身反映了系統(tǒng)設(shè)計人員對系統(tǒng)的抽象理解。

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

1.接口是公開的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類是可以有私有方法或私有變量的。

2.實現(xiàn)接口的一定要實現(xiàn)接口里定義的所有方法,而實現(xiàn)抽象類可以有選擇地重寫需要用到的方法,一般的應(yīng)用里,最頂級的是接口,然后是抽象類實現(xiàn)接口,最后才到具體類實現(xiàn)。

3.接口可以實現(xiàn)多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個接口實現(xiàn)多重繼承。

4.接口還有標(biāo)識(里面沒有任何方法,如Remote接口)和數(shù)據(jù)共享(里面的變量全是常量)的作用。

選擇接口還是抽象類

1.如果要創(chuàng)建不帶任何方法定義和成員變量的基類,那么就應(yīng)該選擇接口而不是抽象類。

2.如果知道某個類應(yīng)該是基類,那么第一個選擇的應(yīng)該是讓它成為一個接口,只有在必須要有方法定義和成員變量的時候,才應(yīng)該選擇抽象類。因為抽象類中允許存在一個或多個被具體實現(xiàn)的方法,只要方法沒有被全部實現(xiàn)該類就仍是抽象類。

詳細(xì)了解Java抽象類與接口

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“詳細(xì)了解Java抽象類與接口”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费99视频有精品视频高清 | 大学生一级特黄的免费大片视频 | 亚洲天堂久久新 | 亚洲国产成人精品91久久久 | 精品无人区一区二区三区a 精品午夜国产在线观看不卡 | 日一级片| 16欧美freesex呦交hd | 波多野结衣在线免费视频 | 成年人福利 | 免费超爽大片黄 | 一级做a爰片性色毛片思念网 | 久青草国产在视频在线观看 | 免费在线观看h片 | 免费三级黄色 | 五月婷婷激情综合 | 波少野结衣色在线 | 看全色黄大色黄女片18 | 三级免费毛片 | 成人18网址在线观看 | 国产91精品系列在线观看 | 黄色毛片小视频 | 一级视频黄色 | 深爱开心激情网 | 黄网站色在线视频免费观看 | 久久久网 | 欧美成a人免费观看 | 欧美精品成人a多人在线观看 | 你懂得在线播放 | 视频在线色 | 一个人看的日本www 一个人看的视频www | 一区二区视频在线观看 | 国产在线精品成人一区二区三区 | 亚洲免费大全 | 欧美视频福利 | 天天摸天天爽天天澡视频 | 不卡一区在线观看 | 午夜久久久久久亚洲国产精品 | 免费观看成年的网站 | 欧美日韩不卡中文字幕在线 | 午夜网站入口 | l欧美18一19sex性 |