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

Java引用類(lèi)型interface的用法總結(jié)

 更新時(shí)間:2022年10月17日 09:05:59   作者:共飲一杯無(wú)  
這篇文章主要為大家詳細(xì)介紹了Java中引用類(lèi)型interface的用法的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下

interface作為成員變量

接口是對(duì)方法的封裝,對(duì)應(yīng)游戲當(dāng)中,可以看作是擴(kuò)展游戲角色的技能。所以,如果想擴(kuò)展更強(qiáng)大技能,我們?cè)?Role 中,可以增加接口作為成員變量,來(lái)設(shè)置不同的技能。

法術(shù)接口和實(shí)現(xiàn)

定義接口:

public interface Skill {

    /**
     * 釋放技能的抽象方法
     * @param name 英雄
     * @param skillType 技能類(lèi)型
     */
    void use(String name,String skillType);
}

public class SkillImpl implements Skill {
    @Override
    public void use(String name,String skillType) {
        System.out.println(name+"使用技能:---》"+skillType);
    }
}

英雄角色

定義角色類(lèi):

public class Hero {

    private String name; // 英雄的名稱(chēng)
    private Skill skill; // 英雄的技能

    public Hero() {
    }

    public Hero(String name, Skill skill) {
        this.name = name;
        this.skill = skill;
    }

    public void attack(String name,String skillType) {
        // 調(diào)用接口中的抽象方法
        skill.use(name,skillType);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Skill getSkill() {
        return skill;
    }

    public void setSkill(Skill skill) {
        this.skill = skill;
    }
}

定義測(cè)試類(lèi):

public class DemoGame {

    public static void main(String[] args) {
        //創(chuàng)建英雄角色
        Hero hero = new Hero();
        // 設(shè)置英雄的名稱(chēng)
        hero.setName("五虎上將關(guān)羽"); 

        // 設(shè)置英雄技能(使用單獨(dú)定義的實(shí)現(xiàn)類(lèi))
        //hero.setSkill(new SkillImpl()); 

        // 設(shè)置英雄技能(同時(shí)使用匿名內(nèi)部類(lèi)和匿名對(duì)象)
        hero.setSkill(new Skill() {
            @Override
            public void use(String name, String skillType) {
                System.out.println(name+"使用技能:---》"+skillType);
            }
        });??
        hero.attack(hero.getName(),"烽火狼煙??????");
        hero.attack(hero.getName(),"萬(wàn)箭齊發(fā)??????");
        hero.attack(hero.getName(),"無(wú)懈可擊?????????");
    }

}

執(zhí)行輸出如下:

五虎上將關(guān)羽使用技能:---》烽火狼煙?????? 五虎上將關(guān)羽使用技能:---》萬(wàn)箭齊發(fā)?????? 五虎上將關(guān)羽使用技能:---》無(wú)懈可擊????????? 

我們使用一個(gè)接口,作為成員變量,以便隨時(shí)更換技能,這樣的設(shè)計(jì)更為靈活,增強(qiáng)了程序的擴(kuò)展性。 接口作為成員變量時(shí),對(duì)它進(jìn)行賦值的操作,實(shí)際上,是賦給它該接口的一個(gè)子類(lèi)對(duì)象。

interface作為方法參數(shù)和返回值類(lèi)型

當(dāng)接口作為方法的參數(shù)時(shí),需要傳遞什么呢?當(dāng)接口作為方法的返回值類(lèi)型時(shí),需要返回什么呢?對(duì),其實(shí)都是它的子類(lèi)對(duì)象。 ArrayList 類(lèi)我們并不陌生,查看API我們發(fā)現(xiàn),實(shí)際上,它是 java.util.List 接口的實(shí)現(xiàn)類(lèi)。所以,當(dāng)我們看見(jiàn)List 接口作為參數(shù)或者返回值類(lèi)型時(shí),當(dāng)然可以將ArrayList 的對(duì)象進(jìn)行傳遞或返回。 請(qǐng)觀(guān)察如下方法:獲取某集合中所有的偶數(shù)。 定義方法:

public static List<Integer> getEvenNum(List<Integer> list) {
    // 創(chuàng)建保存偶數(shù)的集合
    ArrayList<Integer> evenList = new ArrayList<>();
    // 遍歷集合list,判斷元素為偶數(shù),就添加到evenList中
    for (int i = 0; i < list.size(); i++) {
        Integer integer = list.get(i);
        if (integer % 2 == 0) {
        evenList.add(integer);
        }
    }	
    /**
    返回偶數(shù)集合
    因?yàn)間etEvenNum方法的返回值類(lèi)型是List,而ArrayList是List的子類(lèi),
    所以evenList可以返回
    */
    return evenList;
}

測(cè)試方法:

public class Test {
public static void main(String[] args) {
    // 創(chuàng)建ArrayList集合,并添加數(shù)字
    ArrayList<Integer> srcList = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        srcList.add(i);
    }
    /**
    獲取偶數(shù)集合
    因?yàn)間etEvenNum方法的參數(shù)是List,而ArrayList是List的子類(lèi),
    所以srcList可以傳遞
    */
    List list = getEvenNum(srcList);
        System.out.println(list);
    }
}

接口作為參數(shù)時(shí),傳遞它的子類(lèi)對(duì)象。

接口作為返回值類(lèi)型時(shí),返回它的子類(lèi)對(duì)象。

以上就是Java引用類(lèi)型interface的用法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java引用類(lèi)型interface的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決使用@Component會(huì)導(dǎo)致spring.factories中的EnableAutoConfiguration無(wú)效問(wèn)題

    解決使用@Component會(huì)導(dǎo)致spring.factories中的EnableAutoConfiguration無(wú)效

    這篇文章主要介紹了解決使用@Component會(huì)導(dǎo)致spring.factories中的EnableAutoConfiguration無(wú)效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Spring整合消息隊(duì)列RabbitMQ流程

    Spring整合消息隊(duì)列RabbitMQ流程

    Spring整合RabbitMQ很容易,但是整合的目的是為了使用,那要使用RabbitMQ就要對(duì)其有一定的了解,不然容易整成一團(tuán)漿糊。因?yàn)檎f(shuō)到底,Spring只是在封裝RabbitMQ的API,讓其更容易使用而已,廢話(huà)不多說(shuō),讓我們一起整它
    2023-03-03
  • Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式

    Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式

    這篇文章主要介紹了Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 如何在Java中使用正則表達(dá)式API

    如何在Java中使用正則表達(dá)式API

    這篇文章主要介紹了如何在Java中使用正則表達(dá)式API,我們將討論java正則表達(dá)式API,以及如何在Java編程語(yǔ)言中使用正則表達(dá)式。具體詳細(xì)介紹,需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • Java中幾種常用加密算法盤(pán)點(diǎn)

    Java中幾種常用加密算法盤(pán)點(diǎn)

    隨著互聯(lián)網(wǎng)的發(fā)展,信息安全問(wèn)題日益受到重視,加密算法在保證信息安全傳輸方面發(fā)揮著重要作用,本文將簡(jiǎn)要盤(pán)點(diǎn)幾種常用的Java加密算法,介紹它們的基本原理、特點(diǎn)及應(yīng)用情況,以幫助讀者全面了解當(dāng)前加密算法的發(fā)展?fàn)顩r,需要的朋友可以參考下
    2023-11-11
  • SpringBoot2零基礎(chǔ)到精通之映射與常用注解請(qǐng)求處理

    SpringBoot2零基礎(chǔ)到精通之映射與常用注解請(qǐng)求處理

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)映射、常用注解和方法參數(shù)的小技巧
    2022-03-03
  • 微服務(wù)實(shí)戰(zhàn)之怎樣提升springboot服務(wù)吞吐量

    微服務(wù)實(shí)戰(zhàn)之怎樣提升springboot服務(wù)吞吐量

    這篇文章主要介紹了微服務(wù)實(shí)戰(zhàn)之怎樣提升springboot服務(wù)吞吐量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot處理HTTP請(qǐng)求的詳細(xì)流程

    SpringBoot處理HTTP請(qǐng)求的詳細(xì)流程

    這篇文章主要介紹了SpringBoot處理HTTP請(qǐng)求的詳細(xì)流程,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • 使用jenkins+maven+git發(fā)布jar包過(guò)程詳解

    使用jenkins+maven+git發(fā)布jar包過(guò)程詳解

    這篇文章主要介紹了使用jenkins+maven+git發(fā)布jar包過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例詳解

    springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例詳解

    本文主要介紹了springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論

隆回县| 淮阳县| 宕昌县| 资兴市| 锦屏县| 泾源县| 若羌县| 康保县| 贡嘎县| 闻喜县| 小金县| 霸州市| 手机| 长治县| 普陀区| 周至县| 开化县| 游戏| 泰兴市| 云安县| 华池县| 汽车| 南城县| 梁河县| 高安市| 阆中市| 九龙坡区| 凤台县| 四子王旗| 蒙自县| 夏邑县| 永州市| 新昌县| 太谷县| 库车县| 阿克苏市| 清涧县| 厦门市| 永善县| 枣阳市| 普兰县|