亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java引用類型interface的用法總結

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

interface作為成員變量

接口是對方法的封裝,對應游戲當中,可以看作是擴展游戲角色的技能。所以,如果想擴展更強大技能,我們在 Role 中,可以增加接口作為成員變量,來設置不同的技能。

法術接口和實現(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();
        // 設置英雄的名稱
        hero.setName("五虎上將關羽"); 

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

        // 設置英雄技能(同時使用匿名內(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í)行輸出如下:

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

我們使用一個接口,作為成員變量,以便隨時更換技能,這樣的設計更為靈活,增強了程序的擴展性。 接口作為成員變量時,對它進行賦值的操作,實際上,是賦給它該接口的一個子類對象。

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

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

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

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

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

相關文章

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

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

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

    Spring Boot jar中沒有主清單屬性的解決方法

    這篇文章主要介紹了Spring Boot jar中沒有主清單屬性的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • spring boot項目使用@JsonFormat失效問題的解決

    spring boot項目使用@JsonFormat失效問題的解決

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

    將bean注入到Spring中的方式總結

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

    SpringMVC體系分層模式原理圖解

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

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

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

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

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

    Android開發(fā)簡單計算器實現(xiàn)代碼

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

    Java方法重寫_動力節(jié)點Java學院整理

    在Java和其他一些高級面向對象的編程語言中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋,下文給大家介紹java方法重寫及重寫規(guī)則,一起學習吧
    2017-04-04
  • Java安全后端返回文件流方式

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

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

最新評論