6.10 接口作为成员变量类型

package interface_memberVariable;

public class Hero {
    private String  name;//英雄名称
    private Skill skill;//英雄技能

    public Hero() {
    }
    public void attack(){
        System.out.println("我叫"+name+",开始施放技能:");
        skill.use();//调用接口中的抽象方法
        System.out.println("施放技能完成");
    }
    public String getName() {
        return name;
    }

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

    public Skill getSkill() {
        return skill;
    }

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

public interface Skill {
    void use();//施放技能抽象方法
}
package interface_memberVariable;

public class SkillImpl implements Skill{
    @Override
    public void use() {
        System.out.println("Biu~biu~biu");
    }
}
package interface_memberVariable;

public class DemoGame {
    public static void main(String[] args) {
        Hero hero = new Hero();
        hero.setName("艾希");//设置英雄的名称
        //设置英雄技能
//   方法一     hero.setSkill(new SkillImpl());//使用单独定义的      
//    方法二        话可以改变使用匿名内部类          
       /* Skill skill = new Skill() {
            @Override
            public void use() {
                System.out.println("pia~pia~pia");
            }
        };
        hero.setSkill(skill);*/
 //方法三      进一步简化,同时使用匿名内部类和匿名对象          
        hero.setSkill(new Skill() {
            @Override
            public void use() {
                System.out.println("pia~pia~bia~bia");
            }
        });
        hero.attack();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容