JAVA多态(向上转型)与RTTI向下转型
来源:互联网 发布:java发展前景 编辑:程序博客网 时间:2024/05/17 16:03
多态
late-binding, 在编译前不确定 函数调用和哪个具体实现绑定
RTTI运行时刻向下转型
late-binding, 在编译前不确定 函数调用和哪个具体实现绑定
在程序运行期间,再决定函数调用和哪个具体实现绑定。
/* * polymorphism*/class S{public S(){out.println("S()");}public void common(){out.println("S common()");}}class Sub1 extends S{public Sub1(){out.println("Sub1()");}@Overridepublic void common(){out.println("Sub1 common()");}} class Sub2 extends S{public Sub2(){out.println("Sub2()");}@Overridepublic void common(){out.println("Sub2 common()");}}public class Poly {public static void main(String[] args){S[] slist = {new Sub1(),new Sub2(),new S()};for(int i=0; i<3; i++){ //未确定与哪个具体函数实现绑定slist[i].common(); }}}/*output:S()Sub1()S()Sub2()S()Sub1 common()Sub2 common()S common()*/
RTTI运行时刻向下转型
/* * polymorphism and RTTI(Runtime Type Identifier) * */class S{public S(){out.println("S()");}public void common(){out.println("S common()");}}class Sub1 extends S{public Sub1(){out.println("Sub1()");}@Overridepublic void common(){out.println("Sub1 common()");}} class Sub2 extends S{public Sub2(){out.println("Sub2()");}@Overridepublic void common(){out.println("Sub2 common()");}}public class Poly {public static void testPoly(){S[] slist = {new Sub1(),new Sub2(),new S()};for(int i=0; i<3; i++){slist[i].common();}}public static void testRtti(){S[] slist = {new Sub1(),new Sub2(),new S()};Sub1 sb1 = (Sub1)slist[0];//从父类转型至Sub1子类sb1.common();Sub2 sb2 = (Sub2)slist[1];//从父类转型至Sub2子类sb2.common();}public static void main(String[] args){testRtti();}}/*S()Sub1()S()Sub2()S()Sub1 common()Sub2 common()*/
0 0
- JAVA多态(向上转型)与RTTI向下转型
- Java向上转型与向下转型
- JAVA中的向上转型与向下转型
- Java向上转型与向下转型(good)
- Java向上转型与向下转型
- Java向上转型与向下转型
- JAVA中的向上转型与向下转型
- JAVA中的向上转型与向下转型
- java向上转型与向下转型
- JAVA中的向上转型与向下转型
- JAVA向上转型与向下转型
- java向上转型与向下转型
- Java的向上转型与向下转型
- java向上转型与向下转型
- Java的向上转型与向下转型
- Java中的向下转型与向上转型
- Java向上转型与向下转型
- Java中的向上转型与向下转型
- ubuntu 开发环境搭建手册
- 收到的地地道道的
- Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)
- 基于MTD的NANDFLASH设备驱动底层实现原理分析(六)
- 使用sql语句直接生成dataset做为水晶报表的数据源
- JAVA多态(向上转型)与RTTI向下转型
- linux下的一些实用命令和操作
- 移动互联网app业务逻辑图
- zend studio新建项目代码提示和追踪功能失效
- Example workflow: Non-destructive retargeting
- VS2005 SP1补丁下载与安装
- fzu 2136
- iPhone/iPad 开发: nsstring接分字符串成数组split
- 八零后,我们以一种“高不成低不就”的姿态生活