java 对象类型转换之子对象转化成父对象
2014-08-06 21:31
183 查看
代码摘抄自《java 就业培训教程 》——张孝祥
运行一下输出结果如下:
B fun1 is calling
B fun1 is calling
B fun1 is calling
B fun1 is calling
简单梳理一下上面的过程,在callA方法中接收的参数是A类型的引用,传给他的是一个A类型的引用,该引用指向一个B类型的内存空间。然后调用func1()方法 ,这时调用的是传过来的地址所指向内存空间中的func1()方法,而传过来的虽然是A类型的引用,但是该引用指向的内容中存储的是B类型的对象,所以最终调用 的是B类型的func1()方法。
class A{ public void func1(){ System.out.println("A func1 is calling"); } public void func2(){ func1(); } } class B extends A{ @Override public void func1() { System.out.println("B fun1 is calling"); } public void func3(){ System.out.println("B func3 is calling"); } } public class C { public static void main(String args []){ B b=new B(); //新建一个 b类对象 A a=b; //b类对象的地址传给一个a类引用类型变量 callA(a); //a应用传递给callA callA(new B()); //直接把B对象做为一个A对象传递给函数 } public static void callA(A a){ a.func1(); a.func2(); } }
运行一下输出结果如下:
B fun1 is calling
B fun1 is calling
B fun1 is calling
B fun1 is calling
简单梳理一下上面的过程,在callA方法中接收的参数是A类型的引用,传给他的是一个A类型的引用,该引用指向一个B类型的内存空间。然后调用func1()方法 ,这时调用的是传过来的地址所指向内存空间中的func1()方法,而传过来的虽然是A类型的引用,但是该引用指向的内容中存储的是B类型的对象,所以最终调用 的是B类型的func1()方法。
相关文章推荐
- java 对象类型转换之父对象转化为子对象
- java数据类型之间的转换和什么地方要进行强制类型的转化
- Java中对象类型的强制转换
- Java中关于Json对象类型和字符串类型之间互相转化的问题
- Java对象类型转换的四个经验
- Java知多少(33)多态对象的类型转换
- 将未指定格式的日期字符串转化成java.util.Date类型日期对象
- java对象转换String类型的三种方法
- Java中关于Json对象类型和字符串类型之间互相转化的问题 .
- java对象转化成String类型
- Java中对象类型的强制转换
- java转换string类型timestamp为Date对象
- java方式的将java对象以及list或者map转化为json数据,json转换为object或者map
- 使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型
- java 对象的类型转换
- java中类对象之间的类型转换
- Java初级--抽象类,接口及对象的类型转换
- Java面向对象【经典案例】强制/自动类型转换与类型安全的转换
- java学习:对象的类型转换、多态
- Java多态对象的类型转换