第一种:使用单独定义的实现类
例如:
package 匿名内部类;
public class DemoMain {
public static void main(String[] args) {
Hero hero = new Hero();
hero.setName("艾希"); // 设置英雄的名称
// 设置英雄技能
hero.setSkill(new SkillImpl());
hero.attack();
}
}
package 匿名内部类;
public class Hero {
private String name; // 英雄的名称
private Skill skill; // 英雄的技能
public Hero() {
}
public Hero(String name, Skill skill) {
this.name = name;
this.skill = skill;
}
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 匿名内部类;
public interface Skill {
void use(); // 施放技能的抽象方法
}
package 匿名内部类;
public class SkillImpl implements Skill {
@Override
public void use() {
System.out.println("Biu~biu~biu~");
}
}
运行结果:
2.使用匿名内部类
3.同时使用匿名内部类和匿名对象