一、class作為成員變量
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、大化網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、大化網(wǎng)絡(luò)營銷、大化企業(yè)策劃、大化品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供大化建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
在定義一個類Role(游戲角色)時,代碼如下:
使用 int 類型表示角色id和生命值,使用String類型表示姓名。此時,String 本身就是引用類型,由于使用的方式類似常量,所以往往忽略了它是引用類型的存在。如果我們繼續(xù)豐富這個類的定義,給Role戴裝備等屬性,我們將如何編寫呢?
定義武器類,將增加攻擊能力:
定義穿戴盔甲類,將增加防御能力,也就是提升生命值:
定義角色類:
測試類:
public class Test { public static void main(String[] args) { // 創(chuàng)建Weapon 對象 Weapon wp = new Weapon("屠龍刀", 999999); // 創(chuàng)建Armour 對象 Armour ar = new Armour("麒麟甲", 10000); // 創(chuàng)建Role 對象 Role r = new Role(); // 設(shè)置武器屬性 r.setWeapon(wp); // 設(shè)置盔甲屬性 r.setArmour(ar); // 攻 擊 r.attack(); // 穿戴盔甲 r.wear(); } } 輸出結(jié)果: 使用屠龍刀,造成999999點傷害 穿上麒麟甲 ,生命值增加10000
提示:類作為成員變量時,對它進(jìn)行賦值的操作,實際上,是賦給它該類的一個對象。
二、interface作為成員變量
接口是對方法的封裝,對應(yīng)游戲當(dāng)中,可以看作是擴(kuò)展游戲角色的技能。所以,如果想擴(kuò)展更強(qiáng)大技能,我們在Role中,可以增加接口作為成員變量,來設(shè)置不同的技能。
定義接口:
定義角色類:
定義測試類:
public class Test { public static void main(String[] args) { // 創(chuàng)建游戲角色 Role role = new Role(); // 設(shè)置角色法術(shù)技能 role.setFaShuSkill(new FaShuSkill() { @Override public void faShuAttack() { System.out.println("縱橫天下"); } }); // 發(fā)動法術(shù)攻擊 role.faShuSkillAttack(); // 更換技能 role.setFaShuSkill(new FaShuSkill() { @Override public void faShuAttack() { System.out.println("逆轉(zhuǎn)乾坤"); } }); // 發(fā)動法術(shù)攻擊 role.faShuSkillAttack(); } } 輸出結(jié)果: 發(fā)動法術(shù)攻擊:縱橫天下攻擊完畢 發(fā)動法術(shù)攻擊:逆轉(zhuǎn)乾坤攻擊完畢
提示:我們使用一個接口,作為成員變量,以便隨時更換技能,這樣的設(shè)計更為靈活,增強(qiáng)了程序的擴(kuò)展性。 接口作為成員變量時,對它進(jìn)行賦值的操作,實際上,是賦給它該接口的一個子類對象。
三、interface作為方法參數(shù)和返回值類型
當(dāng)接口作為方法的參數(shù)時,需要傳遞什么呢?當(dāng)接口作為方法的返回值類型時,需要返回什么呢?對,其實都是它的子類對象。
ArrayList 類我們并不陌生,查看API我們發(fā)現(xiàn),實際上,它是 java.util.List
接口的實現(xiàn)類。所以,當(dāng)我們看見 List 接口作為參數(shù)或者返回值類型時,當(dāng)然可以將 ArrayList 的對象進(jìn)行傳遞或返回。
請觀察如下方法:獲取某集合中所有的偶數(shù)。
定義方法:
public static ListgetEvenNum(List list) { // 創(chuàng)建保存偶數(shù)的集合 ArrayList 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; }
調(diào)用方法:
提示:接口作為參數(shù)時,傳遞它的子類對象。接口作為返回值類型時,返回它的子類對象。
以上就是java中引用類型的用法總結(jié)的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!