接口以及类作为成员变量

Demo01

package cn.dali.code24;
/*类作为成员变量的时候,与String这种其实是一样的。
* 使用的时候,只需要创建好这个类的对象,赋值就可以了。
*
* 接口作为成员变量的时候,我们只需要在主方法中创建好符合该接口的对象,
* 通过set传进去即可使用。
* 可以通过实现类创建对象,也可以通过匿名内部类的方式创建对象,也可以创建匿名对象*/

public class Demo01 {
    public static void main(String[] args) {
        /*类作为成员变量*/
        Weapon weapon = new Weapon("无尽之刃");//创建一个武器类的对象
        Hero hero = new Hero("周杰伦",weapon);//把武器类对象作为参数传给hero类的对象
        hero.attack();
        System.out.println("============");
        /*接口作为成员变量使用*/

        /*第一种,创建实现类使用*/
        Skill skill = new SkillImpl();//创建多态对象Skill,
        hero.setSkill(skill);
        hero.skillAttack();
        System.out.println("============");
        /*第二种,使用匿名内部类实现接口*/
        Skill skill1 = new Skill() {
            @Override
            public void use() {
                System.out.println("爱的魔力转两圈!~~");
            }
        };
        hero.setSkill(skill1);
        hero.skillAttack();
        System.out.println("=============");
        /*第三种,使用匿名对象匿名内部类实现接口*/
        hero.setSkill(new Skill(){
            @Override
            public void use() {
                System.out.println("爱的魔力转三圈!~~");
            }
        });
        hero.skillAttack();
    }
}

Hero类

package cn.dali.code24;

public class Hero {
    private String name;//英雄名称
    private Weapon weapon;//英雄用的武器
    private Skill skill;//英雄使用技能

    public Hero() {
    }

    public Hero(String name, Weapon weapon) {
        this.name = name;
        this.weapon = weapon;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Weapon getWeapon() {
        return weapon;
    }

    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }
    public void attack(){//英雄的功能
        System.out.println(name+"正在用"+weapon.getName()+"打怪");
    }

    public Skill getSkill() {
        return skill;
    }

    public void setSkill(Skill skill) {
        this.skill = skill;
    }

    public void skillAttack(){
        System.out.println("我要开始释放技能了");
        skill.use();

    }
}

Skill接口:

package cn.dali.code24;

public interface Skill {
    public abstract void use();
}

Skill实现类

package cn.dali.code24;

public class SkillImpl implements Skill {
    @Override
    public void use() {
        System.out.println("爱的魔力转圈圈!~~~~~");
    }
}

Weapon武器类

package cn.dali.code24;

public class Weapon {
    private String name ;//武器的名称

    public Weapon(String name) {
        this.name = name;
    }

    public Weapon() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值