日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 的抽象特性:抽象类与接口深度解析

發(fā)布時間:2023/12/15 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 的抽象特性:抽象类与接口深度解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

要點(diǎn):

  • 抽象類

  • 接口

  • 抽象類與接口的差別

一. 抽象

  對于面向?qū)ο缶幊虂碚f,抽象是它的四大特征之中的一個。

在Java中,能夠通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類。

接口和抽象類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。


二. 抽象類

1).概念基礎(chǔ)

  我們都知道在面向?qū)ο蟮念I(lǐng)域一切都是對象。

同一時候,全部的對象都是通過類來描寫敘述的,可是并非全部的類都是能夠描寫敘述對象(對象 = 狀態(tài) + 行為)的。假設(shè)一個類沒有足夠的信息來描寫敘述一個詳細(xì)的對象,那么我們就能夠?qū)⑦@種類設(shè)為抽象類。抽象類僅僅能被public和默認(rèn)修飾符修飾。

  在了解抽象類之前。先來了解一下 抽象方法抽象方法是一種特殊的方法:它僅僅有聲明。而沒有詳細(xì)的實(shí)現(xiàn)。

抽象方法的聲明格式為:

abstract void func();

  抽象方法必須用abstract關(guān)鍵字進(jìn)行修飾。假設(shè)一個類含有抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關(guān)鍵字修飾 (特別須要注意的是,抽象類也能夠不包括抽象方法,即當(dāng)中全部的方法都是詳細(xì)方法)。由于抽象類中含有未詳細(xì)實(shí)現(xiàn)的方法。所以不能用抽象類創(chuàng)建對象。

public abstract class ClassName {abstract void fun(); }

  從這里能夠看出。抽象類就是為了繼承而存在的,假設(shè)你定義了一個抽象類,卻不去繼承它,那么等于白白創(chuàng)建了這個抽象類。由于你不能用它來做不論什么事情。

對于一個父類,假設(shè)它的某個方法在父類中實(shí)現(xiàn)出來沒有不論什么意義。必須依據(jù)子類的實(shí)際需求來進(jìn)行不同的實(shí)現(xiàn),那么就能夠?qū)⑦@種方法聲明為abstract方法。此時這個類也就成為abstract類了。

  包括抽象方法的類稱為抽象類。但并不意味著抽象類中僅僅能有抽象方法,它和普通類一樣,相同能夠擁有成員變量和普通的成員方法。注意,抽象類和普通類的主要有三點(diǎn)差別:

  • 抽象方法不能是 private的,否則。其不能被子類繼承,子類也無法實(shí)現(xiàn)該方法。從而這樣做沒有不論什么意義;

  • 抽象類不能用來創(chuàng)建對象;

  • 假設(shè)一個類繼承于一個抽象類,則子類必須實(shí)現(xiàn)父類的抽象方法。假設(shè)子類沒有實(shí)現(xiàn)父類的抽象方法,則必須將子類也定義為為abstract類。

     在其它方面。抽象類和普通的類并沒有差別。


2).本質(zhì)

  • 抽象類與詳細(xì)類的唯一差別:含有抽象方法的類一定是抽象類;

  • 抽象類的根本作用是為了繼承。所以抽象類的抽象方法不能被private修飾;

  • 抽象類比詳細(xì)類僅多一點(diǎn)抽象因素:行為層面的抽象(能夠包括抽象方法)。


三. 接口

1).概念基礎(chǔ)

  接口(interface),在軟件project中。接口泛指供別人調(diào)用的方法或者函數(shù)。從這里。我們能夠體會到Java語言設(shè)計(jì)者的初衷,它是對行為的抽象。接口僅僅能被public和默認(rèn)修飾符修飾。 在Java中。定義一個接口的形式例如以下:

public interface InterfaceName {}

  接口中能夠含有 變量和方法。

可是要注意,接口中的 變量 會被隱式地指定為 public static final變量(而且僅僅能是public static final變量,而且 public static final 可省。即默認(rèn)就是public static final 的) 。而 方法 會被隱式地指定為 public abstract方法且僅僅能是 public abstract 方法(public abstract 可省,即默認(rèn)就是 public abstract 的)而且接口中全部的方法不能有詳細(xì)的實(shí)現(xiàn)。也就是說,接口中的方法必須都是抽象方法。

從這里能夠隱約看出接口和抽象類的差別。接口是一種極度抽象的類型,它比抽象類更加“抽象”。

  要讓一個類遵循某組特地的接口須要使用 implements 關(guān)鍵字,詳細(xì)格式例如以下:

class ClassName implements Interface1,Interface2,[....]{}

  能夠看出,同意一個類遵循多個特定的接口。假設(shè)一個非抽象類遵循了某個接口。就必須實(shí)現(xiàn)該接口中的全部方法。對于遵循某個接口的抽象類,能夠不實(shí)現(xiàn)該接口中的抽象方法。

2).本質(zhì)

  • 接口是一種行為契約。是對行為的抽象。

四. 接口與抽象類的差別

1.語法層面上的差別

  1)抽象類能夠提供成員方法的實(shí)現(xiàn)細(xì)節(jié)。而接口中僅僅能存在 public abstract (可省) 方法;

  2)抽象類中的成員變量能夠是各種類型的,而接口中的成員變量僅僅能是 public static final (可省) 類型的;

  3)接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類能夠有靜態(tài)代碼塊和靜態(tài)方法;

  4)一個類僅僅能繼承一個抽象類,而一個類卻能夠?qū)崿F(xiàn)多個接口。

         


2.設(shè)計(jì)層面上的差別

  1)抽象類是對一種事物的抽象,即對類抽象,而接口是對行為的抽象。

抽象類是對整個類總體進(jìn)行抽象。包括屬性、行為,可是接口卻是對類局部(行為)進(jìn)行抽象。

舉個簡單的樣例,飛機(jī)和鳥是不同類的事物。可是它們都有一個共性,就是都會飛。那么在設(shè)計(jì)的時候,能夠?qū)w機(jī)設(shè)計(jì)為一個類 Airplane。將鳥設(shè)計(jì)為一個類 Bird,可是不能將飛行 這個特性也設(shè)計(jì)為類,因此它僅僅是一個行為特性,并非對一類事物的抽象描寫敘述。此時能夠?qū)?飛行 設(shè)計(jì)為一個接口Fly。包括方法fly(),然后Airplane和Bird分別依據(jù)自己的須要實(shí)現(xiàn)Fly這個接口。然后至于有不同種類的飛機(jī)。比方戰(zhàn)斗機(jī)、民用飛機(jī)等直接繼承Airplane就可以。對于鳥也是相似的,不同種類的鳥直接繼承Bird類就可以。從這里能夠看出,繼承是一個 “是不是”的關(guān)系,而 接口 實(shí)現(xiàn)則是 “有沒有”的關(guān)系。

假設(shè)一個類繼承了某個抽象類,則子類必然是抽象類的種類,而接口實(shí)現(xiàn)則是有沒有、具備不具備的關(guān)系,比方鳥能否飛(或者是否具備飛行這個特點(diǎn)),能飛行則能夠?qū)崿F(xiàn)這個接口。不能飛行就不實(shí)現(xiàn)這個接口。


  2)設(shè)計(jì)層面不同。抽象類作為非常多子類的父類。它是一種模板式設(shè)計(jì)。

而接口是一種行為規(guī)范(契約),它能夠跨越不同的類。是一種輻射式設(shè)計(jì)。

什么是模板式設(shè)計(jì)?最簡單樣例,大家都用過ppt里面的模板,假設(shè)用模板A設(shè)計(jì)了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了。假設(shè)它們的公共部分須要修改。則僅僅須要修改模板A就能夠了,不須要又一次對ppt B和ppt C進(jìn)行修改。而輻射式設(shè)計(jì),比方某個電梯都裝了某種報警器,一旦要更新報警器,就必須全部更新。

也就是說 對于抽象類。假設(shè)須要加入新的方法,能夠直接在抽象類中加入詳細(xì)的實(shí)現(xiàn),子類能夠不進(jìn)行變更。而對于接口則不行。假設(shè)接口進(jìn)行了變更,則全部實(shí)現(xiàn)這個接口的類都必須進(jìn)行對應(yīng)的修改。

  以下看一個網(wǎng)上流傳最廣泛的樣例:門和警報的樣例:門都有open( )和close( )兩個動作,此時我們能夠定義通過抽象類和接口來定義這個抽象概念:

abstract class Door {public abstract void open();public abstract void close(); }

或者

interface Door {public abstract void open();public abstract void close(); }

可是如今假設(shè)我們須要門具有報警alarm( )的功能,那么該怎樣實(shí)現(xiàn)?以下提供兩種思路:

  1)將這三個功能都放在抽象類里面??墒沁@樣一來全部繼承于這個抽象類的子類都具備了報警功能??墒怯械拈T并不一定具備報警功能;

  2)將這三個功能都放在接口里面,須要用到報警功能的類就須要實(shí)現(xiàn)這個接口中的open( )和close( )。或許這個類根本就不具備open( )和close( )這兩個功能。比方火災(zāi)報警器。

  從這里能夠看出。 Door的open() 、close()和alarm()根本就屬于兩個不同范疇內(nèi)的行為。open()和close()屬于門本身固有的行為特性。而alarm()屬于延伸的附加行為。因此最好的解決的方法是單獨(dú)將報警設(shè)計(jì)為一個接口,包括alarm()行為,Door設(shè)計(jì)為單獨(dú)的一個抽象類,包括open和close兩種行為。再設(shè)計(jì)一個報警門繼承Door類和實(shí)現(xiàn)Alarm接口。

interface Alram {void alarm(); }abstract class Door {void open();void close(); }class AlarmDoor extends Door implements Alarm {void oepn() {//....}void close() {//....}void alarm() {//....} }

3、小結(jié)

  • 抽象類是對一種事物的抽象,接口是對行為的抽象;

  • 抽象類是一種模板,接口是一種契約;

  • 抽象類的抽象程度介于普通類和接口之間。


引用

《Java 編程思想》
深入理解Java的接口和抽象類
java提高篇(四)—–抽象類與接口
Java抽象類與接口的差別

轉(zhuǎn)載于:https://www.cnblogs.com/gavanwanggw/p/7325372.html

總結(jié)

以上是生活随笔為你收集整理的Java 的抽象特性:抽象类与接口深度解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无码aⅴ精品一区二区三区浪潮 | 大乳巨大乳j奶hd | 黄色三级小说 | 91国在线观看| 国产剧情av麻豆香蕉精品 | 欧美综合日韩 | 国产日本在线 | 伊人三级| 都市激情亚洲色图 | 亚洲人在线观看视频 | 国产一二三 | 一区二区免费在线视频 | 伊人久久大香线蕉av一区 | 欧美一级淫片免费视频魅影视频 | av国语 | 免费久久一级欧美特大黄 | 日韩视频福利 | av男人的天堂网 | 男人的天堂伊人 | 99re6在线视频 | 国产视频精品在线 | 日本aaa视频 | 国产高清久久久 | 黄色小视频在线观看免费 | 亚洲爽爽网 | 人人看人人艹 | 国产成人在线一区 | 色九九视频 | 婷婷色五 | www.国产区 | 色噜噜狠狠狠综合曰曰曰 | 日韩精品无码一区二区三区 | 四虎av网站 | 91免费看片网站 | 日韩色中色 | 亚洲色图视频在线观看 | 日本乱轮视频 | 污污免费观看 | 人人爽视频| 久久精品欧美视频 | 三年中文免费观看大全动漫 | 色多多在线观看 | 欧美精品一区二区三区久久 | a级免费视频 | 亚洲国产精品无码久久久 | 欧美日韩中文字幕在线视频 | 国产精品入口麻豆 | 制服.丝袜.亚洲.中文.综合 | 亚洲精品欧美精品 | 成人在线精品视频 | 中文字幕在线不卡 | 中文字幕丰满孑伦无码专区 | 精品一区二区毛片 | 日韩一区二区三区精 | 日本精品一区二区三区视频 | 6699av| 日韩精品导航 | av国产一区二区 | 黄色特级片 | 不卡精品视频 | 欧美资源在线 | 合欢视频污 | 国产精品一线天 | 91一区二区 | 综合五月婷婷 | 日韩视频一二三 | 午夜剧场福利 | 国产欧美一区二区三区在线老狼 | 亚洲综合欧美 | 欧美日本二区 | 国产第一毛片 | 男生操男生网站 | 亚洲天堂影院在线观看 | 成人黄色视屏 | 久久久久国产精品视频 | 日本爽爽爽爽爽爽在线观看免 | 中文亚洲av片不卡在线观看 | 欧美视频一区二区三区四区在线观看 | 亚洲午夜一区二区 | 久久成年视频 | 玉米地疯狂的吸允她的奶视频 | 在线观看黄色免费视频 | 久久久久免费精品 | 阿v免费视频 | kk视频在线观看 | 日韩欧美精品中文字幕 | 无码国产精品一区二区色情男同 | 黑帮大佬和我的三百六十五天 | 91丨porny丨海角社区 | 美女18毛片| 青娱乐极品视频在线 | 新婚之夜玷污岳丰满少妇在线观看 | 999国产在线 | 成人午夜天 | 亚洲91av | 日本免费色视频 | 精品久久久久久久久久久久久 | 国产成年网站 | a在线视频 |