Java--引用类型用法总结 红太狼 2021-09-27 23:06 213阅读 0赞 ### 引用类型用法总结 ### * Class作为成员变量 * interface作为方法参数和返回值类型 在实际开发中,引用类型的使用非常重要,也是非常普遍的。我们可以在理解基本类型的使用方式基础上,进一步去掌握引用类型的使用方式。基本类型可以作为成员变量、作为方法的参数、作为方法的返回值,那么当然引用类型也是可以的。 # Class作为成员变量 # 在定义一个类Role(游戏角色)时,代码如下: class Role { int id; // 角色id int blood; // 生命值 String name; // 角色名称 } 使用`int`类型表示角色id和生命值,使用`String`类型表示姓名。此时,`String`本身就是引用类型,由于使用的方式类似常量,所以往往忽略了它是引用类型的存在。如果我们继续丰富这个类的定义,给Role增加武器,穿戴装备属性,将增加攻击能力: class Weapon { String name; // 武器名称 int hurt; // 伤害值 } 定义穿戴盔甲类,将增加防御能力,也就是提升生命值: class Armour { String name;// 装备名称 int protect;// 防御值 } 定义角色类: class Role { int id; int blood; String name; // 添加武器属性 Weapon wp; // 添加盔甲属性 Armour ar; // 提供get/set方法 public Weapon getWp() { return wp; } public void setWeapon(Weapon wp) { this.wp = wp; } public Armour getArmour() { return ar; } public void setArmour(Armour ar) { this.ar = ar; } // 攻击方法 public void attack(){ System.out.println("使用"+ wp.getName() +", 造成"+wp.getHurt()+"点伤害"); } // 穿戴盔甲 public void wear(){ // 增加防御,就是增加blood值 this.blood += ar.getProtect(); System.out.println("穿上"+ar.getName()+", 生命值增加"+ar.getProtect()); } } 测试类: 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作为方法参数和返回值类型 # 当接口作为方法的参数时,需要传递什么呢?当接口作为方法的返回值类型时,需要返回什么呢?对,其实就是它的子类对象 // 会游泳的接口 interface Swimmable { public abstract void swimming(); } // 会游泳的老师 class SwimTeacher implements Swimmable { public void swimming() { System.out.println("会游泳的老师"); } } // 会游泳的学生 class SwimStudent implements Swimmable { public void swimming() { System.out.println("会游泳的学生"); } } // 会游泳的女孩 class SwimGirl implements Swimmable { public void swimming() { System.out.println("会游泳的女孩"); } } // 测试类 public class Demo09 { public static void main(String[] args) { // 获取到一个会游泳的对象 Swimmable swim = getSwimObject(); swim.swimming(); } // 获取一个会游泳的即可 public static Swimmable getSwimObject() { // 返回实现Swimmable接口的实现类即可 // SwimTeacher ob = new SwimTeacher(); // SwimStudent ob = new SwimStudent(); SwimGirl ob = new SwimGirl(); return ob; } } `接口作为参数时,传递它的实现类对象。 接口作为返回值类型时,返回它的实现类对象。`
还没有评论,来说两句吧...