博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
神奇的JAVA多态
阅读量:6856 次
发布时间:2019-06-26

本文共 2474 字,大约阅读时间需要 8 分钟。

以前理解了基本思想,这版本的演示和应用比较真实。

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

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();  }}/

转载地址:http://gsiyl.baihongyu.com/

你可能感兴趣的文章
Thymeleaf教程 (九) 局部变量
查看>>
如何选择PHP项目的开发方案?
查看>>
java 面试题
查看>>
定时刷新 JS
查看>>
centos7 安装gitlab
查看>>
div+css实现的左右两个等高div
查看>>
Linux学习笔记-忘了第几天了:简单的用户管理命令
查看>>
教你3分钟搞定Linux正则表达式
查看>>
& 号和管道符号(|)在不同场景下的使用方法
查看>>
cssSourceMap: true 的作用
查看>>
app定位经纬度出现5e-324的情况
查看>>
是什么让程序员成了一份苦逼的工作?
查看>>
程序员如何做好应聘?简历、面试和Offer
查看>>
阿里云MVP课堂:零基础建站,满足你拥有自己网站的心愿
查看>>
(十七) 整合spring cloud云架构 -消息驱动 Spring Cloud Stream
查看>>
mysql主从同步,安装配置操作
查看>>
推荐:并发情况下:Java HashMap 形成死循环的原因
查看>>
C++ unordered_map using a custom class type as the key
查看>>
Nginx 常见设置之用户认证
查看>>
<!DOCTYPE html>很重要
查看>>