java中的向上转型有什么妙用?

假如你在一个物流运输公司,有个客户要求你为他运输一定数量的产品到某地,使用某种交通工具.那我们假设你的管理程序中有Truck类,Train类,Plane类专门用来实现使用不同交通工具的成本计算,都有方法cost(Double weight,Double space);那么,问题出来了.客户对于运输器种类是可选择的,你是不是要对每种运输器new个实例放到不同的service方法中为客户服务呢?
很明显这么做有很多代码重复,而且效率太低.那么为什么不构造一个运输工具的父类:

然后子类Truck,Plane,Train分别实现cost方法
再构造一个工厂类为客户制造子类实例

服务程序的方法实现:

看上面服务层的代码多简单‘,而且在MVC层次结构中方法和类的设计也和面向对象.这就是上塑造型给我们带来的好处咯
这回就方便了,需要Truck的时候,客户只要告诉你他要用卡车运输运多少距离多远.那业务员就在option按扭里面选择”卡车”在文本框里输入重量多少距离多远.veiw层把数据传给controler处理成我们的服务程序需要的数据类型.然后服务程序被controler调用,用transportCost方法计算出成本返回给veiw,显示给业务员,业务员就可以告诉客户需要支付多少钱啦‘

 

 

可以应用java中的上转型对象,实现java编程的多态。

    上转型对象不是父类创建的对象,而是子类对象的“简化”状态,它不关心子类新增的功能,只关心子类继承和重写的功能。
    当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。
当使用上转型对象在调用这个方法时就可能具有多种形态。因为不同的子类在重写父类的方法时可能产生不同的行为。也就是说,不同对象的上转型对象调用同一方法可能产生不同的行为。

    例如下面的程序你测试一下就可以理解这样的用法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章