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

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

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

interface作為成員變量

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

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

定義接口:

public interface Skill {

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

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

英雄角色

定義角色類:

public class Hero {

    private String name; // 英雄的名稱
    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;
    }
}

定義測試類:

public class DemoGame {

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

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

        // 設(shè)置英雄技能(同時(shí)使用匿名內(nèi)部類和匿名對象)
        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(),"萬箭齊發(fā)??????");
        hero.attack(hero.getName(),"無懈可擊?????????");
    }

}

執(zhí)行輸出如下:

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

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

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

當(dāng)接口作為方法的參數(shù)時(shí),需要傳遞什么呢?當(dāng)接口作為方法的返回值類型時(shí),需要返回什么呢?對,其實(shí)都是它的子類對象。 ArrayList 類我們并不陌生,查看API我們發(fā)現(xiàn),實(shí)際上,它是 java.util.List 接口的實(shí)現(xiàn)類。所以,當(dāng)我們看見List 接口作為參數(shù)或者返回值類型時(shí),當(dāng)然可以將ArrayList 的對象進(jì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方法的返回值類型是List,而ArrayList是List的子類,
    所以evenList可以返回
    */
    return evenList;
}

測試方法:

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的子類,
    所以srcList可以傳遞
    */
    List list = getEvenNum(srcList);
        System.out.println(list);
    }
}

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡化Spring的一種快速開發(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à)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot處理HTTP請求的詳細(xì)流程

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

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

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

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

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

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

最新評論

读书| 论坛| 西峡县| 鲜城| 平邑县| 林州市| 神农架林区| 金沙县| 蓬安县| 嵊州市| 延川县| 襄垣县| 璧山县| 嵩明县| 女性| 深州市| 廉江市| 二连浩特市| 苍南县| 延吉市| 灌阳县| 贵定县| 封开县| 邵武市| 仙游县| 张家口市| 延吉市| 班戈县| 台州市| 虹口区| 岑巩县| 大余县| 石嘴山市| 张家界市| 吐鲁番市| 灵武市| 周宁县| 宝丰县| 贡觉县| 仁怀市| 盐山县|