大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

詳細了解Java抽象類與接口

更新時間:2020-05-27 16:14:52 來源:動力節點 瀏覽2520次

抽象類

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

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

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

詳細了解Java抽象類與接口

代碼實現如下:

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

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

特征:

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

示例:

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

詳細了解Java抽象類與接口

代碼實現如下:

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("警報門用鑰匙、指紋、密碼都可以開門。");
	}

}

面向接口編程的理解

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

接口和抽象類的區別

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

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

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

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

選擇接口還是抽象類

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

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

詳細了解Java抽象類與接口

以上就是動力節點java培訓機構的小編針對“詳細了解Java抽象類與接口”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 狠狠狠综合色 | 欧美成人日韩 | 五月婷婷网站 | 五月婷婷亚洲 | 久久天堂夜夜一本婷婷麻豆 | 久久国产色 | 黄色毛片视频网站 | 国产成人精品aaaa视频一区 | 国产伦乱| 日韩综合图区 | 五月四房婷婷 | 久久久91精品国产一区二区 | 国产ww久久久久久久久久 | 91精品免费在线观看 | 国产一区二区精品久久凹凸 | 97在线视频网站 | 日韩伦理在线视频 | 国产精品久久久久久久久福利 | 天天透天天插 | 日日a.v拍夜夜添久久免费 | 四虎影视2022入口网址 | 91久久综合九色综合欧美98 | 免费播放国产性色生活片 | 99久久精品国产国产毛片 | xxx毛片| 欧美激情区 | 欧美人一级淫片a免费播放 欧美人与zoxxxx另类9 | 亚洲欧美综合国产精品一区 | 老妇毛片| 伊人久久影院 | 亚洲成人性视频 | 日韩欧美国产一区二区三区 | 天天干天天操天天透 | 中文字幕亚洲精品第一区 | 一级做受毛片免费大片 | 最新国产中文字幕 | 免费爱爱视频网站 | 欧美日韩激情在线 | 欧美成人免费在线观看 | 国产欧美一区二区成人影院 | 国产精品国产三级国产普通话 |