java 中对象引用转换总结
2008-11-19 10:25
281 查看
在这里我创建了一个父类A一个子类B
分别尝试了四种组合AA,AB,BB,BA。(第一个字母表示引用的类型,第二个字母表示实际类型)
class A{
public void method1(){
System.out.println("class"+this.getClass().getSimpleName()+":method1");
}
}
class B extends A{
public void method1(){
System.out.println("class"+this.getClass().getSimpleName()+":method1");
}
}
public class xx{
public static void main(String[]args){
//第一种情况
A realA=new A();
realA.method1();
//B referenceB1=(B)realA;//错误,realA的实际类型是A,不能强制转换为B引用类型。否则抛出ClassCastException
//第二种情况
A referenceArealB=new B();
B referenceB2=(B)referenceArealB;//强制转换成功
referenceB2.method1();
//第三种情况
B referenceBrealB=new B();
A ReferenceA1=(A)referenceBrealB;//强制转换成功
ReferenceA1.method1();
//第四种情况
B referenceBrealA=(B)new A();//错误
}
}
/* 总结:
* 注意必须得是继承层次当中进行类型转换
* 在引用的时候只能允许父类引用子类的对象,也就是说引用的级别必须得比实际对象的级别高(当然可以同级),否则不能编译通过。
* 在强制转化的时候,被强制转化的目标类型要比要低实际类型要高(当然也可以同级),否则会抛出异常classCastException
*
* */
分别尝试了四种组合AA,AB,BB,BA。(第一个字母表示引用的类型,第二个字母表示实际类型)
class A{
public void method1(){
System.out.println("class"+this.getClass().getSimpleName()+":method1");
}
}
class B extends A{
public void method1(){
System.out.println("class"+this.getClass().getSimpleName()+":method1");
}
}
public class xx{
public static void main(String[]args){
//第一种情况
A realA=new A();
realA.method1();
//B referenceB1=(B)realA;//错误,realA的实际类型是A,不能强制转换为B引用类型。否则抛出ClassCastException
//第二种情况
A referenceArealB=new B();
B referenceB2=(B)referenceArealB;//强制转换成功
referenceB2.method1();
//第三种情况
B referenceBrealB=new B();
A ReferenceA1=(A)referenceBrealB;//强制转换成功
ReferenceA1.method1();
//第四种情况
B referenceBrealA=(B)new A();//错误
}
}
/* 总结:
* 注意必须得是继承层次当中进行类型转换
* 在引用的时候只能允许父类引用子类的对象,也就是说引用的级别必须得比实际对象的级别高(当然可以同级),否则不能编译通过。
* 在强制转化的时候,被强制转化的目标类型要比要低实际类型要高(当然也可以同级),否则会抛出异常classCastException
*
* */
相关文章推荐
- Java父类引用指向子类对象总结
- 总结Java中的对象和引用
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- 使用jackson对Java对象与JSON字符串相互转换的一些总结。
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- java学习笔记:java的多态,子类和父类的相互转换,父类引用指向子类的对象
- java对象引用传递和值传递的一些总结
- java设计模式--基础思想总结--父类引用操作对象
- Atiitt 对象转换json 序列化规范 Java 循环引用的解决 设置序列化层次深度 去除不必的属性 太长不方便月度 jsonObject.remove("num1"); Prety fo
- java对象引用传递和值传递的一些总结
- Java强制类型转换--object对象转换为String的一些总结
- Java基础总结6---对象的强、软、弱、和虚引用
- java:对象中引用类型转换的验证
- Java学习笔记之对象传值和引用总结
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- 用JAXB转换XML和Java对象时的循环引用问题的解决方法
- Java自学总结之一primitive与对象引用变量
- 总结学习! xml与java对象转换 --- JDK自带的JAXB(Java Architecture for XML Binding)
- java设计模式--基础思想总结--父类引用操作对象