java 对象类型转换

一、对象类型转换

Java的基本类型转换暂且不提,这里主要记录一下对象之间的类型转换

在这之前,先明确两个概念:对象类型和引用类型

 public static void main(String[] args) {
        Person p = new Person();
    }

对象(的)类型:如上图对象就是 new Person(); 该对象的类型为Peoson

引用类型:如图;p 引用指向 new Person的地址,所以它也是Peoson

通常情况下,引用类型和对象类型是一样的

所有的对象类型转换必须具有继承关系,否则无法转换

1.子类转父类

public static void main(String[] args) {
    son s = new son();
    Person p = s;
}

可以直接将子类s赋给父类p,系统自动完成类型转换

转换后的父类p,拥有(本身和子类)的所有方法和属性,相当于合并,但是,子类会覆盖掉父类中同名的属性和方法,

比如在p中有一个属性 String name = “father”,子类中也有一个 String name = “son”,转换后,调用 p.name 输出 son

2.父类转换子类

通俗讲:看运气,能不能成功不确定

主要看子类的引用类型和父类是否一致

public static void main(String[] args) {
    Person p =  new Person();
    son s2 = new son();
    son s;
    //转换失败,因为p指向的类型是Person ,s 的引用类型为son
     s = (son)p;
    //成功 首先将 p 的引用指向s2,此时的 p 的类型变成了son, 所以同类型之间可以转换
    p = s2;
    s = (son)p;
}

3.接口之间转换

和父子类转换一致,

1.实现类 b --> 接口 a
    直接转 b = a;
2.接口 a -- > 实现类 b
    看接口的引用
    a = b1   接口引用指向 b1
    B b2 = (B)a;  再转,此时可以成功

4.总结:

类型的转换必须是同类型之间,所以不同对象之间的转换本质是把两个对象想办法变成同一种类型

像子类转父类,子接口转父接口,由于子类继承于父类,所以父类包含子类,在转换过程中,系统将自动帮我们转换

父转子,系统不能识别,于是需要手动强制转换,并且只有在手动将两者的类型调为一致才可以成功,通常我们不会去调整两者的类型,所以表现出来的效果就是,有时候可以成功,有时候会失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值