package hbut.jdl.qrs;
public abstract class Role {
protected String nameString;
protected int level;
protected int blood;
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
public abstract void fight();
public String toString(){
return String.format("(%s, %d, %d)", this.nameString,
this.level, this.blood);
}
}
package hbut.jdl.qrs;
public class SwordsMan extends Role{
public void fight(){
System.out.println("挥剑攻击");
}
public String toString(){
return "剑士" + super.toString();
}
}
package hbut.jdl.qrs;
public class Magician extends Role{
public void fight(){
System.out.println("魔法攻击");
}
public void cure(){
System.out.println("魔法治疗");
}
public String toString(){
return "魔法师" + super.toString();
}
}
package hbut.jdl.qrs;
public class RPG {
public static void showBlood(Role role){
System.out.printf("%s 血量 %d%n",role.getNameString(),role.getBlood());
}
public static void drawFight(Role role){
System.out.print(role.getNameString());
role.fight();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwordsMan swordsMan = new SwordsMan();
swordsMan.setNameString("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
System.out.println(swordsMan.toString());
Magician magician = new Magician();
magician.setNameString("Moncia");
magician.setLevel(2);
magician.setBlood(300);
System.out.println(magician.toString());
showBlood(swordsMan);
showBlood(magician);
drawFight(swordsMan);
drawFight(magician);
}
}
JAVA中
某个类成员函数用一个虚基类作参数时,在程序中存在着子类向父类的转型,这个时候多态polymorphism就出现了,使用多态的初衷是使用单一接口操作多种类型的对象 在这个例子就是shoeBlood()这个接口,既可以操作剑士,又可以操作魔法师 这里的接口指的是对象上可操作的方法
使用继承Inherit的初衷是避免重复行为的定义,我一直搞不懂怎么去用这个特性,在本例中,所有英雄都有名字,等级和血量,他们的getters和setters可以在基类中实现,在某个类中,获得一个剑士或者魔法师,我们就可以调用Role中的方法,来获取某些特性
抽象类和抽象方法的使用初衷是表示定义不完整的类,不允许获得实例对象,虚函数配合多态