62,614
社区成员
发帖
与我相关
我的任务
分享
switch(charClass){
case "圣骑士":
castSkill = new CastPaladinSkill();
break;
case "战士";
castSkill = new CastWarriorSkill();
break;
//...........等等
}
Character onlineChar = new Character();
onlineChar.castSkill.Cast();
public interface CastSkill {
public void Cast();//接口中的方法
}
public class CastPaSkill implements CastSkill{
@Override
public void Cast() {
System.out.println("释放圣骑士技能!");
}
}
public class CastWaSkill implements CastSkill{
@Override
public void Cast() {
System.out.println("释放战士技能!!");
}
}
public class Hero {
String name;
CastSkill castSkill ;
/**
* 构造方法,构造任务属性
* @param name
* @param charClass
*/
public Hero(String name,String charClass){
this.name = name;
if(charClass.equals("a")){
castSkill = new CastPaSkill();
}else if(charClass.equals("b")){
castSkill = new CastWaSkill();
}
}
}
public class Test {
public static void main(String[] args) {
Hero hero1 = new Hero("楼主","a");
Hero hero2 = new Hero("沙发","b");
System.out.print(hero1.name);
hero1.castSkill.Cast();
System.out.print(hero2.name);
hero2.castSkill.Cast();
}
}
ICastSkill.java
package com.hero;
public interface ICastSkill {
public void Cast();
}
AbstractHero.java
package com.hero;
public abstract class AbstractHero implements ICastSkill {
protected String name;
public void Cast() {
System.out.println("由具体子类来重写!");
}
public String getName(){
return name;
}
}
package com.hero;
public class Paladin extends AbstractHero {
public Paladin(String name){
this.name = name;
}
@Override
public void Cast() {
System.out.println("释放圣骑士技能!!");
}
}
package com.hero;
public class Warrior extends AbstractHero {
public Warrior(String name){
this.name = name;
}
@Override
public void Cast() {
System.out.println("释放战士技能!!");
}
}
Test.java
public class Test {
public static void main(String[] args) {
AbstractHero hero = new Paladin( "paladin");
hero.Cast();
System.out.println(hero.getName());
System.out.println("------------");
hero = new Warrior("warrior");
hero.Cast();
System.out.println(hero.getName());
//如果只关心行为,就直接定义成接口
ICastSkill hero2 = new Paladin( "paladin");
hero2.Cast();
System.out.println("------------");
hero2 = new Warrior("warrior");
hero2.Cast();
}
}