上下转型的详解

在学了Java后,以前的东西有些遗忘,今天来回忆下。

1. 基本定义和特点:

向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口     :  A a1=new B( ); 这就是一个向上转型。

向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误 

向下转型:父类引用的对象s为子类类型称为向下转型。  如:A a1=new B( );  B b1=(B) a1;”这就是一个向转型。

在向下转型过程中,分为两种情况:

情况一:如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。

情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。如:


它可以使用instanceof来避免出错此类错误。如:

 

1.  为什么用上下转型?

其实向上转型有两个好处,一个是我们不必知道正在处理的对象的确切类型,这一切都交给多态处理即可;另一个好处是可以简化代码数量父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想。

向下转型用于父类调用子类方法或者父类给子类变量赋值,利于程序扩展。最多的应用是Java的泛型,但向下转型存在风险,如:

A a1 = new B(); // 向上转型

B b1 = (B) a1;  // 向下转型

可能会出错:java.lang.ClassCastException错误

这时可以用instanceof(判断是否是实例)来减少错误:

A a2 = new A();

if(a2 instanceof B){

B b2 = (B) a2; // 向下转型

b2.aMthod();

b2.bMethod1();  

b2.bMethod2();

}






  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值