神奇的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多态的更多相关文章
- Java 多态——与C++的比较
学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...
- C++和java多态的区别
C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 转载自:http://www.cnblogs.com/plmnko/archive ...
- 深入理解Java多态机制
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...
- Java 多态 父类和子类方法的访问控制权限
Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...
- Java多态(二)
public class ExtendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); ...
- 从JVM角度看Java多态
首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...
- 关于java多态的理解
要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...
- Java经验杂谈(2.对Java多态的理解)
多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态: 要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行 其中实际类型为new关键字后面的类型. 重载发 ...
- 学JAVA第十六 天,JAVA多态
今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...
随机推荐
- winrar
winrar 破解方法 1.安装winrar试用版: 2.在winrar安装文件夹下新建一个文本文件,文件名为rarreg.key: 3.用记事本打开该文件,将下面内容复制到文件中,并存盘,搞定! R ...
- linux驱动由浅入深系列:tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)音频子系统之一【转】
本文转载自:http://blog.csdn.net/radianceblau/article/details/64125411 目前linux中主流的音频体系结构是ALSA(Advanced Lin ...
- C++<iomanip>控制符
C++<iomanip>控制符 c++ cout 输出格式 在c++程序里面经常见到下面的头文件 #include <iomanip> io代表输入输出,manip是manip ...
- HDU 2665(主席树,无修改第k小)
Kth number Time Limit: 15000/5000 MS (Java/Others) ...
- Effective Java(二)—— 循环与 StringBuilder
当需要为一个类编写 toString() 方法时,如果字符串操作比较简单,便可以信赖编译器,它会为你合理地构造最终的字符串结果(而不会不断创建冗余的中间变量). String mongo = &quo ...
- bzoj 4709 [ Jsoi2011 ] 柠檬 —— 斜率优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 课上讲的题,还是参考了博客...:https://www.cnblogs.com/GX ...
- 0522 json
一.概念 json依赖于js和xml,是一种数据交换格式,json对比xml的生成和处理要更加方便.因此在许多领域,json正逐步取代xml的使用. 二.使用 1.在JS当中 json在javascr ...
- SnackDown Online Qualifier 2017
好久没做题了,然后就想着随便做一个.无奈cf都是晚上,然后就看见这个,随便做做. 资格赛,只要做出来1题就行了,4天的时间. 1. 水题 #include <iostream> #incl ...
- Ubuntu下搭建repo服务器(一): 配置gitosis
1. 说明 服务器端IP: 192.168.1.126,下文简称:A端: 客户端IP: 192.168.130.19,下文简称:B端: Android工程代号:17435. 2. 安装必要软件(A端) ...
- 【转载】JavaScript中同名标识符优先级-Snandy
一,局部变量先使用后声明,不影响外部同名变量 var x = 1; // --> 外部变量x function fn(){ alert(x); // --> undefined 局部变量x ...