您的位置:首页 > 编程语言 > Java开发

神奇的JAVA多态

2016-04-20 16:52 633 查看
以前理解了基本思想,这版本的演示和应用比较真实。

顺路下来抽象方法和类,接口,就顺理成章啦。。。



JAVA文件放一块了,分别对照前一个帖子的文件名:

////////////////////////////
package cc.openhome;

public class Role {
private String name;
private int level;
private int blood;

public int getBlood() {
return blood;
}

public void setBlood(int blood) {
this.blood = blood;
}

public int getLevel() {
return level;
}

public void setLevel(int level) {
this.level = level;
}

public String getName() {
return name;
}

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

public void fight() {
// subclass override this method;
}
}
//////////////////////////////////////
package cc.openhome;

public class SwordsMan extends Role {
@Override
public void fight() {
System.out.println("Attack with swords");
}
}
/////////////////////////////////////////////
package cc.openhome;

public class Magician extends Role {
@Override
public void fight() {
System.out.println("Attack with magician");
}
}
///////////////////////////////////////////
package cc.openhome;

public class RPG {
public static void main(String[] args) {
SwordsMan swordsMan = new SwordsMan();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
System.out.printf("SwordsMan: (%s, %d, %d)%n", swordsMan.getName(),
swordsMan.getLevel(), swordsMan.getBlood());

Magician magician = new Magician();
magician.setName("Monica");
magician.setLevel(2);
magician.setBlood(100);
System.out.printf("Magician: (%s, %d, %d)%n", magician.getName(),
magician.getLevel(), magician.getBlood());

showBlood(swordsMan);
showBlood(magician);
drawFight(swordsMan);
drawFight(magician);
Role role1 = new SwordsMan();
Role role2 = new Magician();
SwordsMan swordsMan1 = (SwordsMan) role1;
Magician magician1 = (Magician) role2;
SwordsMan swordsMan2 = new SwordsMan();
Role role3 = swordsMan2;
SwordsMan swordsMan3 = (SwordsMan) role3;
}

/*
public static void showBlood(SwordsMan swordsMan) {
System.out.printf("%s Blood %d%n",
swordsMan.getName(), swordsMan.getBlood());
}

public static void showBlood(Magician magician) {
System.out.printf("%s Blood %d%n",
magician.getName(), magician.getBlood());
}
*/

public static void showBlood(Role role) {
System.out.printf("%s Blood %d%n",
role.getName(), role.getBlood());
}

public static void drawFight(Role role) {
System.out.print(role.getName());
role.fight();
}
}
/////////////////////////////////


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: