首頁  >  文章  >  Java  >  java中引用類型的用法總結

java中引用類型的用法總結

王林
王林轉載
2019-11-30 15:31:431940瀏覽

java中引用類型的用法總結

一、class作為成員變數

#在定義一個類別Role(遊戲角色)時,程式碼如下:

java中引用類型的用法總結

使用int 類型表示角色id和生命值,使用String類型表示姓名。此時,String 本身就是引用類型,由於使用的方式類似常數,所以往往忽略了它是引用類型的存在。如果我們繼續豐富這個類別的定義,給Role戴裝備等屬性,我們要如何寫呢?

免費影片教學推薦:java免費影片教學

定義武器類,將增加攻擊能力:

java中引用類型的用法總結

定義穿戴盔甲類,會增加防禦能力,也就是提升生命值:

java中引用類型的用法總結

定義角色類:

java中引用類型的用法總結

測試類別:

public class Test {
    public static void main(String[] args) {
        // 创建Weapon 对象
        Weapon wp = new Weapon("屠龙刀", 999999);
        // 创建Armour 对象
        Armour ar = new Armour("麒麟甲", 10000);
        // 创建Role 对象
        Role r = new Role();

        // 设置武器属性
        r.setWeapon(wp);

        // 设置盔甲属性
        r.setArmour(ar);

        // 攻 击
        r.attack();
        // 穿戴盔甲
        r.wear();
    }
}
输出结果:
使用屠龙刀,造成999999点伤害
穿上麒麟甲 ,生命值增加10000

提示:類別作為成員變數時,對它進行賦值的操作,實際上,是賦給它該類別的一個物件。

二、interface作為成員變數

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

定義介面:

java中引用類型的用法總結

# 定義角色類別:

java中引用類型的用法總結

定義測試類別:

public class Test {
    public static void main(String[] args) {
        // 创建游戏角色
        Role role = new Role();
        // 设置角色法术技能
        role.setFaShuSkill(new FaShuSkill() {

            @Override
            public void faShuAttack() { System.out.println("纵横天下");
            }
        });

        // 发动法术攻击
        role.faShuSkillAttack();

        // 更换技能
        role.setFaShuSkill(new FaShuSkill() {
            @Override
            public void faShuAttack() { System.out.println("逆转乾坤");
        }
        });
        // 发动法术攻击
        role.faShuSkillAttack();
    }
}
输出结果:
发动法术攻击:纵横天下攻击完毕
发动法术攻击:逆转乾坤攻击完毕

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

三、interface作為方法參數、傳回值類型

#當介面作為方法的參數時,需要傳遞什麼呢?當介面作為方法的回傳值類型時,需要回傳什麼呢?對,其實都是它的子類別物件。

 ArrayList 類別我們並不陌生,查看API我們發現,實際上,它是 java.util.List 介面的實作類別。所以,當我們看見 List 介面作為參數或傳回值類型時,當然可以將 ArrayList 的物件傳遞或傳回。

請觀察如下方法:取得某集合中所有的偶數。

定義方法:

public static List<Integer> getEvenNum(List<Integer> list) {
     // 创建保存偶数的集合
     ArrayList<Integer> evenList = new ArrayList<>();
     // 遍历集合list,判断元素为偶数,就添加到evenList中
     for (int i = 0; i < list.size(); i++) { Integer integer = list.get(i);
         if (integer % 2 == 0) { evenList.add(integer);
         }
     }
     /*
     返回偶数集合因为getEvenNum方法的返回值类型是List,而ArrayList是List的子类, 所以evenList可以返回
     */
     return evenList;
}

呼叫方法:

java中引用類型的用法總結

#提示:介面作為參數時,傳遞它的子類別物件。介面作為傳回值類型時,傳回它的子類別物件。

java相關文章教學推薦:java入門教學

以上是java中引用類型的用法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除