一、class作为成员变量
在定义一个类Role(游戏角色)时,代码以下:
运用 int 范例示意角色id和生命值,运用String范例示意姓名。此时,String 自身就是援用范例,由于运用的体式格局相似常量,所以每每疏忽了它是援用范例的存在。假如我们继承雄厚这个类的定义,给Role戴设备等属性,我们将怎样编写呢?
免费视频教程引荐: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中,能够增添接口作为成员变量,来设置差别的妙技。
定义接口:
定义角色类:
定义测试类:
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中援用范例的用法总结的细致内容,更多请关注ki4网别的相干文章!