java多态简单测试
2018-01-31 17:44
225 查看
写一些代码来实现下多态,帮助理解
简单总结
父类引用指向子类对象,可以使用父类中的属性以及方法,若方法被子类重写则会调用子类的方法,子类的其他方法则不可被使用;
强转后属性均变为子类中的,也可以调用子类中的其他方法。
//造血干细胞 public class HSCs { public String name = "HSCs"; public String color = "none"; public boolean hasNucleus = true; public void copyOfSelf(){ System.out.println("I can replicate myself"); //自我复制 } public void work() { System.out.println("differentiate into others"); //分化为其他细胞 } } //红细胞 class RBCs extends HSCs { public String name = "RBCs"; public String color = "red"; public boolean hasFe = true; public boolean hasNucleus = false; public void CaptureOxygen() { System.out.println("Capture Oxygen"); // 捕获氧气 } public void work() { System.out.println("Carry oxygen"); // 携带氧气 } public void work(int amount) { System.out.println("Carry " + amount + " molecules of oxygen"); // 携带一定数量的氧气 } } //白细胞 class Leukocyte extends HSCs { public String color = "white"; public boolean hasNucleus = true; public void work(String asd) { System.out.println("I can eat rubbish" + asd); } public void work() { System.out.println("I can eat rubbish"); } }
public class Test01 { public static void main(String[] args) { // TODO Auto-generated method stub //父类引用指向子类对象 HSCs hscs = new RBCs(); // 查看父类和子类共有的成员变量 System.out.println(hscs.hasNucleus); // 输出结果为:true,是父类中的属性 System.out.println(hscs.color); // 输出结果为:none,是父类中的属性 // 查看子类特有的成员变量 // System.out.println(hscs.hasFe); //无法通过编译 // 调用被重写的方法 hscs.work(); // 输出结果为:“Carry oxygen”,是子类中的方法 // 调用子类中与父类同名但参数不同的方法(此方法应该被视为子类特有的方法) // hscs.work(12); //无法通过编译 // 调用父类特有的方法 hscs.copyOfSelf(); // 输出结果为:“I can replicate myself”,是父类中的方法 // 调用子类特有的方法 // hscs.CaptureOxygen(); //无法通过编译 } }
//测试下转换为子类后的对象 public class Test02 { public static void main(String[] args) { // TODO Auto-generated method stub // 转换类型之后 HSCs hscs = new RBCs(); RBCs rbCs = (RBCs) hscs; // 转换为红细胞 //Leukocyte leukocyte = (Leukocyte)hscs; 父类已经转换为子类,不可再次被转换 // 查看父类和子类共有的属性 System.out.println(rbCs.hasNucleus); // 输出结果为:false,是子类中的属性 System.out.println(rbCs.color); // 输出结果为:red,是子类中的属性 // 查看子类特有的属性 System.out.println(rbCs.hasFe); // 输出结果为:true,是子类中的属性 // 调用被重写的方法 rbCs.work(); // 输出结果为:“Carry oxygen”,是子类中的方法 // 调用子类中与父类同名但参数不同的方法(此方法应该被视为子类特有的方法) rbCs.work(4); // 输出结果为:“Carry 4 molecules of oxygen”,是子类中的方法 // 调用父类特有的方法 rbCs.copyOfSelf(); // 输出结果为:“I can replicate myself”,是父类中的方法 // 调用子类特有的方法 rbCs.CaptureOxygen(); // 输出结果为:“Capture Oxygen”,是父类中的方法 } }
简单总结
父类引用指向子类对象,可以使用父类中的属性以及方法,若方法被子类重写则会调用子类的方法,子类的其他方法则不可被使用;
强转后属性均变为子类中的,也可以调用子类中的其他方法。
相关文章推荐
- java做的简单的数学测试题
- Java链接redis并简单测试代码
- JAVA简单自定义类实现与测试
- 如何使用java压缩文件夹成为zip包(最简单的方式 已测试)
- 一、问题 MyEclipse怎么导出可运行的jar包。 二、测试环境 MyEclipse V8.6 三、操作过程 1、java项目没有导入第三方jar包的情况 这时候打包就比较简单: ①首先在MyE
- Java重要知识点(继承、多态、接口,异常,工具,测试)
- Java实训——创建一个窗体程序,实现简单的数学加、减法测试。
- java的简单测试类
- 关于java 继承和简单多态
- 简单的JAVA TCP/IP连接测试
- 【java开发】——spring框架的简单入门测试
- Java中四种XML解析技术之简单测试
- java的简单测试类
- Java简单图形编辑器 放置、移动和擦除方块 鼠标事件测试程序 Java核心技术 事件处理
- MQTT——java简单测试(二)
- Java Web开发环境塔建 及简单测试Java Web程序
- java接口和多态的测试
- 简单的JAVA UDP连接测试
- java简单实现测试程序执行时间及日期转换字符串
- 简单的java爬虫抓取网页实现代码(未测试)