神奇的JAVA多态
2016-04-20 16:52
633 查看
以前理解了基本思想,这版本的演示和应用比较真实。
顺路下来抽象方法和类,接口,就顺理成章啦。。。
JAVA文件放一块了,分别对照前一个帖子的文件名:
顺路下来抽象方法和类,接口,就顺理成章啦。。。
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(); } } /////////////////////////////////
相关文章推荐
- java ftp上传下载,下载文件编码设置
- JAVA进行身份证验证
- Struts2+Spring4+Hibernate4整
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- Spring中整合Xfire发布webservice服务
- Spring之config.xml配置
- 怎样在eclipse里安装Hibernate / JBoss 工具【最新】
- CharArrayReader和CharArrayWriter实例
- spring事务管理
- Filter中访问spring ioc容器中的对象的方式
- 一个简单的例子让你理解值传递和引用传递
- java.lang.IllegalStateException问题的发现与解决
- eclipse svn项目路径改变
- Eclipse报Unhandled event loop exception错误的解决办法
- 在Java中如何遍历Map对象
- Java中split的用法
- Spring 注解 javax.annotation.Resource和@Autowired
- Spring整合CXF,发布RSETful 风格WebService
- FreeMarker整合Spring 3
- Java 发送Get和Post请求