欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年10月17日 09:05:59   作者:共飲一杯無(wú)  
這篇文章主要為大家詳細(xì)介紹了Java中引用類型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 技能類型
     */
    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;
    }
}

定義測(cè)試類:

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)部類和匿名對(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è)子類對(duì)象。

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

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

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

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

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

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

相關(guān)文章

  • spring boot 自定義參數(shù)過(guò)濾器,把傳入的空字符轉(zhuǎn)換成null方式

    spring boot 自定義參數(shù)過(guò)濾器,把傳入的空字符轉(zhuǎn)換成null方式

    這篇文章主要介紹了spring boot 自定義參數(shù)過(guò)濾器,把傳入的空字符轉(zhuǎn)換成null方式。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring Boot jar中沒(méi)有主清單屬性的解決方法

    Spring Boot jar中沒(méi)有主清單屬性的解決方法

    這篇文章主要介紹了Spring Boot jar中沒(méi)有主清單屬性的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • spring boot項(xiàng)目使用@JsonFormat失效問(wèn)題的解決

    spring boot項(xiàng)目使用@JsonFormat失效問(wèn)題的解決

    這篇文章主要介紹了spring boot項(xiàng)目使用@JsonFormat失效問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 將bean注入到Spring中的方式總結(jié)

    將bean注入到Spring中的方式總結(jié)

    在Java的Spring框架中,將bean注入到容器中是核心概念之一,這是實(shí)現(xiàn)依賴注入的基礎(chǔ),Spring提供了多種方式來(lái)將bean注入到容器中,本文給大家總結(jié)了將bean注入到Spring中的幾種方式,需要的朋友可以參考下
    2023-12-12
  • SpringMVC體系分層模式原理圖解

    SpringMVC體系分層模式原理圖解

    這篇文章主要介紹了SpringMVC體系分層模式原理圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java?離線中文語(yǔ)音文字識(shí)別功能的實(shí)現(xiàn)代碼

    Java?離線中文語(yǔ)音文字識(shí)別功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java?離線中文語(yǔ)音文字識(shí)別,本次使用springboot?+maven實(shí)現(xiàn),官方demo為springboot+gradle,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Spring依賴注入與第三方Bean管理基礎(chǔ)詳解

    Spring依賴注入與第三方Bean管理基礎(chǔ)詳解

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在 傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例
    2022-12-12
  • Android開(kāi)發(fā)簡(jiǎn)單計(jì)算器實(shí)現(xiàn)代碼

    Android開(kāi)發(fā)簡(jiǎn)單計(jì)算器實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android開(kāi)發(fā)簡(jiǎn)單計(jì)算器實(shí)現(xiàn),本文放置了完整的Android開(kāi)發(fā)電腦,通過(guò)部署項(xiàng)目可以直接按到效果,希望本篇文章可以對(duì)你有所幫助
    2021-06-06
  • Java方法重寫(xiě)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java方法重寫(xiě)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    在Java和其他一些高級(jí)面向?qū)ο蟮木幊陶Z(yǔ)言中,子類可繼承父類中的方法,而不需要重新編寫(xiě)相同的方法。但有時(shí)子類并不想原封不動(dòng)地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫(xiě)。方法重寫(xiě)又稱方法覆蓋,下文給大家介紹java方法重寫(xiě)及重寫(xiě)規(guī)則,一起學(xué)習(xí)吧
    2017-04-04
  • Java安全后端返回文件流方式

    Java安全后端返回文件流方式

    這篇文章主要介紹了Java安全后端返回文件流方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論