java 中对象引用转换总结

 在这里我创建了一个父类A一个子类B

分别尝试了四种组合AA,AB,BB,BA。(第一个字母表示引用的类型,第二个字母表示实际类型)

  1. class A{
  2.     public void method1(){
  3.         System.out.println("class"+this.getClass().getSimpleName()+":method1");
  4.     }
  5. }
  6. class B extends A{
  7.     public void method1(){
  8.         System.out.println("class"+this.getClass().getSimpleName()+":method1");
  9.     }
  10. }
  11. public class xx{
  12.     public static void main(String[]args){
  13.         //第一种情况
  14.         A realA=new A();
  15.         realA.method1();
  16.         //B referenceB1=(B)realA;//错误,realA的实际类型是A,不能强制转换为B引用类型。否则抛出ClassCastException
  17.         //第二种情况
  18.         A referenceArealB=new B();
  19.         B referenceB2=(B)referenceArealB;//强制转换成功
  20.         referenceB2.method1();
  21.         
  22.         //第三种情况
  23.         B referenceBrealB=new B();
  24.         A ReferenceA1=(A)referenceBrealB;//强制转换成功
  25.         ReferenceA1.method1();
  26.         
  27.         //第四种情况
  28.         B referenceBrealA=(B)new A();//错误
  29.     }
  30. }
  31. /* 总结:
  32.  * 注意必须得是继承层次当中进行类型转换
  33.  * 在引用的时候只能允许父类引用子类的对象,也就是说引用的级别必须得比实际对象的级别高(当然可以同级),否则不能编译通过。
  34.  * 在强制转化的时候,被强制转化的目标类型要比要低实际类型要高(当然也可以同级),否则会抛出异常classCastException
  35.  * 
  36.  * */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值