最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java程序開發(fā)中abstract 和 interface的區(qū)別詳解

 更新時(shí)間:2022年01月19日 14:48:44   作者:士多啤梨蘋果橙  
abstract class和interface在Java語言中都是用來進(jìn)行抽象類。但是兩者有什么區(qū)別呢,接下來小編給大家?guī)砹薬bstract 和 interface的區(qū)別詳解,感興趣的朋友一起學(xué)習(xí)吧

先給大家說下基本概念

    在Java語言中, abstract class 和interface 是支持抽象類定義的兩種機(jī)制。正是由于這兩種機(jī)制的存在,才賦予了Java強(qiáng)大的 面向?qū)ο竽芰?。abstract class和interface之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發(fā)者在進(jìn) 行抽象類定義時(shí)對于abstract class和interface的選擇顯得比較隨意。其實(shí),兩者之間還是有很大的區(qū)別的,對于它們的選擇甚至反映出對 于問題領(lǐng)域本質(zhì)的理解、對于設(shè)計(jì)意圖的理解是否正確、合理。

  abstract class和interface在Java語言中都是用來進(jìn)行抽象類(本文 中的抽象類并非從abstract class翻譯而來,它表示的是一個(gè)抽象體,而abstract class為Java語言中用于定義抽象類的一種方法, 請讀者注意區(qū)分)定義的,那么什么是抽象類,使用抽象類能為我們帶來什么好處呢?

  在 面向?qū)ο蟮母拍钪校覀冎浪械膶ο蠖际峭ㄟ^類來描繪的,但是反過來卻不是這樣。并不是 所有的類都是用來描繪對象的(把類具體化),如果一個(gè)類中沒有包含足夠的信息來描繪一個(gè)具體的對象,這樣的類就是抽象類。抽象類往往用來表征我們在對問題領(lǐng)域進(jìn)行分析、 設(shè)計(jì)中得出的抽象概念,是對一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。比如:如果我們進(jìn)行一個(gè)圖形編輯軟件的開發(fā),就會(huì)發(fā)現(xiàn)問題領(lǐng)域存在著圓、 三角形這樣一些具體概念,它們是不同的,但是它們又都屬于形狀這樣一個(gè)概念,形狀這個(gè)概念在問題領(lǐng)域是不存在的,它就是一個(gè)抽象概念。正是因?yàn)槌橄蟮母拍?在問題領(lǐng)域沒有對應(yīng)的具體概念,所以用以表征抽象概念的抽象類是不能夠?qū)嵗摹?/p>

java開發(fā)里面經(jīng)常會(huì)用到虛函數(shù)和接口,這兩者的區(qū)別是什么呢?

abstract: 子類里面只能繼承一個(gè)父類

interface: 子類可以實(shí)現(xiàn)多個(gè)接口

那什么時(shí)候用abstract,什么時(shí)候用interface呢?

當(dāng)某個(gè)子類和父類是 is a關(guān)系時(shí),比如一個(gè)亞洲人是一個(gè)人,那么一個(gè)亞洲人的子類可以繼承一個(gè)人的父類。
當(dāng)子類和父類是like a關(guān)系時(shí),比如一個(gè)美洲超人像一個(gè)超人,超人的能力不是每個(gè)人都有的,所以不是所有人的屬性,我們不能把超能力歸于人的父類,這時(shí)就可以用interface

代碼例子:

public abstract class Man {
public abstract void eat();
} 
public interface SuperPower {
public void superPower();
}
public class AsiaMan extends Man { 
@Override
public void eat() {
System.out.println("亞洲人用筷子吃");
}
} 
public class AmericanSuperMan extends Man implements SuperPower {
public void superPower() {
System.out.println("美國超人會(huì)飛");
}
@Override
public void eat() {
System.out.println("美國人用刀叉吃");
}
}
public static void main(String[] args) {
Man anAsiaMan = new AsiaMan();
AmericanSuperMan anAmericanSuperMan = new AmericanSuperMan();
anAsiaMan.eat();
anAmericanSuperMan.eat(); 
anAmericanSuperMan.superPower();
} 

運(yùn)行結(jié)果:

美國人用刀叉吃
美國超人會(huì)飛
亞洲人用筷子吃

正確的使用abstract和interface有利提高代碼可讀性,當(dāng)人們看到extend時(shí)就會(huì)知道這是一個(gè)is a什么,看到implement時(shí)可以知道這個(gè)類有什么特性like a

相關(guān)文章

  • 淺談Java slf4j日志簡單理解

    淺談Java slf4j日志簡單理解

    這篇文章主要介紹了淺談Java日志簡單理解,詳細(xì)的介紹了slf4j的概念和使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作

    Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作

    這篇文章主要介紹了Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java JDBC導(dǎo)致的反序列化攻擊原理解析

    Java JDBC導(dǎo)致的反序列化攻擊原理解析

    這篇文章主要介紹了Java JDBC導(dǎo)致的反序列化攻擊原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java?BitMap源碼仿寫實(shí)現(xiàn)

    Java?BitMap源碼仿寫實(shí)現(xiàn)

    這篇文章主要介紹了Java?BitMap源碼仿寫實(shí)現(xiàn),所謂bitmap,就是用每一位來存放某種狀態(tài),適用于大規(guī)模數(shù)據(jù),但數(shù)據(jù)狀態(tài)又不是很多的情況。通常是用來判斷某個(gè)數(shù)據(jù)存不存在的
    2022-12-12
  • java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾

    java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ftp上傳的相關(guān)資料,教大家如何創(chuàng)建文件夾?具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 使用Java實(shí)現(xiàn)獲取客戶端IP地址

    使用Java實(shí)現(xiàn)獲取客戶端IP地址

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)獲取客戶端IP地址,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • java對象轉(zhuǎn)成byte數(shù)組的3種方法

    java對象轉(zhuǎn)成byte數(shù)組的3種方法

    這篇文章主要為大家詳細(xì)介紹了java對象轉(zhuǎn)成byte數(shù)組的3種方法,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2018-06-06
  • java程序中foreach用法示例

    java程序中foreach用法示例

    這篇文章主要介紹了java程序中foreach用法示例,需要的朋友可以參考下
    2014-04-04
  • Java經(jīng)典排序算法之歸并排序詳解

    Java經(jīng)典排序算法之歸并排序詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之歸并排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • spring使用ehcache實(shí)現(xiàn)頁面緩存示例

    spring使用ehcache實(shí)現(xiàn)頁面緩存示例

    這篇文章主要介紹了spring使用ehcache實(shí)現(xiàn)頁面緩存示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

莱州市| 讷河市| 武城县| 英吉沙县| 新宾| 谢通门县| 福贡县| 湖口县| 新邵县| 黎平县| 土默特左旗| 花莲市| 即墨市| 天水市| 驻马店市| 平远县| 丰顺县| 孝昌县| 微山县| 宜城市| 历史| 灵川县| 甘德县| 自治县| 安乡县| 冷水江市| 诸城市| 长子县| 文水县| 固阳县| 澎湖县| 安阳市| 双鸭山市| 梅河口市| 罗城| 邵东县| 长岭县| 阳山县| 沿河| 新乡县| 肇州县|