一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

java提高篇(九)-----實(shí)現(xiàn)多重繼承

 關(guān)平藏書(shū) 2017-07-31

      多重繼承指的是一個(gè)類可以同時(shí)從多于一個(gè)的父類那里繼承行為和特征,然而我們知道Java為了保證數(shù)據(jù)安全,它只允許單繼承。有些時(shí)候我們會(huì)認(rèn)為如果系統(tǒng)中需要使用多重繼承往往都是糟糕的設(shè)計(jì),這個(gè)時(shí)候我們往往需要思考的不是怎么使用多重繼承,而是您的設(shè)計(jì)是否存在問(wèn)題.但有時(shí)候我們確實(shí)是需要實(shí)現(xiàn)多重繼承,而且現(xiàn)實(shí)生活中也真正地存在這樣的情況,比如遺傳:我們即繼承了父親的行為和特征也繼承了母親的行為和特征。可幸的是Java是非常和善和理解我們的,它提供了兩種方式讓我們曲折來(lái)實(shí)現(xiàn)多重繼承:接口和內(nèi)部類。

一、 接口

      在介紹接口和抽象類的時(shí)候了解到子類只能繼承一個(gè)父類,也就是說(shuō)只能存在單一繼承,但是卻可以實(shí)現(xiàn)多個(gè)接口,這就為我們實(shí)現(xiàn)多重繼承做了鋪墊。

      對(duì)于接口而已,有時(shí)候它所表現(xiàn)的不僅僅只是一個(gè)更純粹的抽象類,接口是沒(méi)有任何具體實(shí)現(xiàn)的,也就是說(shuō),沒(méi)有任何與接口相關(guān)的存儲(chǔ),因此也就無(wú)法阻止多個(gè)接口的組合了。

復(fù)制代碼
interface CanFight {
    void fight();
}

interface CanSwim {
    void swim();
}


interface CanFly {
    void fly();
}

public class ActionCharacter {
    public void fight(){
        
    }
}

public class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{

    public void fly() {
    }

    public void swim() {
    }

    /**
     * 對(duì)于fight()方法,繼承父類的,所以不需要顯示聲明
     */
}
復(fù)制代碼

二、內(nèi)部類

      上面使用接口實(shí)現(xiàn)多重繼承是一種比較可行和普遍的方式,在介紹內(nèi)部類的時(shí)候談到內(nèi)部類使的多繼承的實(shí)現(xiàn)變得更加完美了,同時(shí)也明確了如果父類為抽象類或者具體類,那么我就僅能通過(guò)內(nèi)部類來(lái)實(shí)現(xiàn)多重繼承了。如何利用內(nèi)部類實(shí)現(xiàn)多重繼承,請(qǐng)看下面實(shí)例:兒子是如何利用多重繼承來(lái)繼承父親和母親的優(yōu)良基因。

首先是父親Father和母親Mother:

復(fù)制代碼
public class Father {
    public int strong(){
        return 9;
    }
}

public class Mother {
    public int kind(){
        return 8;
    }
}
復(fù)制代碼

      重頭戲在這里,兒子類Son:

復(fù)制代碼
public class Son {
    
    /**
     * 內(nèi)部類繼承Father類
     */
    class Father_1 extends Father{
        public int strong(){
            return super.strong() + 1;
        }
    }
    
    class Mother_1 extends  Mother{
        public int kind(){
            return super.kind() - 2;
        }
    }
    
    public int getStrong(){
        return new Father_1().strong();
    }
    
    public int getKind(){
        return new Mother_1().kind();
    }
}
復(fù)制代碼

      測(cè)試程序:

復(fù)制代碼
public class Test1 {

    public static void main(String[] args) {
        Son son = new Son();
        System.out.println("Son 的Strong:" + son.getStrong());
        System.out.println("Son 的kind:" + son.getKind());
    }

}
----------------------------------------
Output:
Son 的Strong:10
Son 的kind:6
復(fù)制代碼

      兒子繼承了父親,變得比父親更加強(qiáng)壯,同時(shí)也繼承了母親,只不過(guò)溫柔指數(shù)下降了。這里定義了兩個(gè)內(nèi)部類,他們分別繼承父親Father類、母親類Mother類,且都可以非常自然地獲取各自父類的行為,這是內(nèi)部類一個(gè)重要的特性:內(nèi)部類可以繼承一個(gè)與外部類無(wú)關(guān)的類,保證了內(nèi)部類的獨(dú)立性,正是基于這一點(diǎn),多重繼承才會(huì)成為可能。

     有關(guān)于更多接口和內(nèi)部類的詳情,請(qǐng)參考這里:

       內(nèi)部類: java提高篇----詳解內(nèi)部類

          接口: java提高篇-----抽象類與接口

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩中国性生活视频| 日本欧美一区二区三区高清| 欧美精品一区久久精品| 中日韩美一级特黄大片| 年轻女房东2中文字幕| 国产原创中文av在线播放| 亚洲精品深夜福利视频| 国产欧美韩日一区二区三区| 亚洲高清欧美中文字幕| 中文字幕亚洲精品乱码加勒比| 好吊妞视频免费在线观看| 成人综合网视频在线观看| 精品al亚洲麻豆一区| 日韩欧美一区二区不卡视频| 日本高清不卡在线一区| 视频在线免费观看你懂的 | 国产大屁股喷水在线观看视频| 亚洲精品熟女国产多毛| 色综合久久超碰色婷婷| 国产一二三区不卡视频| 中文字幕精品一区二区年下载| 高跟丝袜av在线一区二区三区 | 一级片二级片欧美日韩| a久久天堂国产毛片精品| 九九蜜桃视频香蕉视频| 中国一区二区三区人妻| 草草夜色精品国产噜噜竹菊| 加勒比东京热拍拍一区二区| 视频在线免费观看你懂的| 熟女乱一区二区三区丝袜| 精品一区二区三区三级视频| 高潮日韩福利在线观看| 高清一区二区三区不卡免费| 日韩一级一片内射视频4k| 丝袜av一区二区三区四区五区| 青青操视频在线播放免费| 在线欧洲免费无线码二区免费| 日韩一区二区三区有码| 日本精品中文字幕在线视频| 日韩欧美第一页在线观看| 欧美午夜一区二区福利视频|