您的位置:首页 > 编程语言 > Java开发

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

*

* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: