java中的向下转型和向上转型

一、 java中的向上转型,一般是使用子类实例对象初始化父类对象引用,这种方式一般是安全的,一般为隐身的转换,初始化后的对象只能调用父类的方法和属性,如接口,抽象类的实例化等大多采用这种方式。

二、而java中的向下转型,是使用父类实例对象初始化子类实例对象,这个时候就是不安全的,在向下转型时,为了保证转型的安全性要做一下两步:

1)使用instanceof进行对象判断,格式为(父类对象) instanceof (子类名)

2) 若返回的是真,则可以进行转化,否则则不可。

三、java中getClass 和instanceof的区别

class A { }

class B extends A { }

Object o1 = new A();
Object o2 = new B();

o1 instanceof A => true
o1 instanceof B => false
o2 instanceof A => true // <================ HERE
o2 instanceof B => true

o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <===============HERE
o2.getClass().equals(B.class) => true


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值