向上造型与向下造型

首先,解释一下什么是向上造型和什么向下造型。

向上造型:子类引用的对象转换为父类类型。例如:A类是父类,B类是子类。提到子类和父类用B类继承A类更合适。A a = new B();

注:向上造型的一个特点:当子类向上造型后的对象的方法中不存在子类的自己的特色的方法,只有父类的方法。而且子类对于父类进行重写的方法。向上造型的对象的方法为重写后新的方法。

向下造型:父类引用的对象转换为子类类型。但是对于父类的引用对象一定要是由子类实例化的,也就是说向下造型的出现一般的情况都是和向上造型一起出现的。

举个例子来说明一下上面的一段话的意思:

A类是父类,B类是子类

A a = new A(); B b = new B();

A a1 = b; ---向上造型

B b1 =(B)a1;-----向下造型

B b2 = (A)a;--------这个就会报错。ClassCastException

下面我在多说几句,这个向下造型在我们开发中具体作用。单独看向下造型是没有什么作用。和我在上面描述的其实向下造型就是向上造型的反向作用。我们的世界是平衡的,既然java的开发者发明了向上造型,你应该一起发明了向下造型。

下面这一段的解释希望大家对于泛型有一定的理解。如果不了解泛型的概念,简单了解泛型的概念进行阅读。

我给大家通过的一个现实的事件说起:

体育馆里面有一个球柜,里面放着足球,篮球,排球。

public Interface ball{

}

public class football extends ball{

         public void place(){ System.out.println("football place"); }

}

public class basketball extends ball{

         public void place(){ System.out.println("basketball place"); }

}

public class volleyball extends ball{

         public void place(){ System.out.println("volley place"); }

}

然后我们想把这些球放到球柜里面,定义下面的list

List<ball> ballplace = new ArrayList<ball>();

运用向上造型:

Ball a = new football();

Ball b = new basketball();

Ball c = new volleyball();

ballplace.add(a);

ballplace.add(b);

ballplace.add(c);

这样就将足球,篮球,排球的集体球放进去了。不然就要定义足球柜,篮球柜,排球柜。要是有更多的就会定义很多集合。这样不堪设想。

想一想我们前面说的向上造型后,子类的各自的特有方法就没有了。那么我们从集合里面取出a,b,c的时候我们有想使用子类的特有方法怎么办呢!这里我们就用到了向下造型。取出a,b,c对象后用向下造型将它们转化成football,basketball,volleyball。这样就能用它们各自自己的方法了。这也是向下造型的具体用处。

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/DKCS/blog/886248

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值