java之上转型对象

1. 上转型对象

上转型对象是将子类的对象赋值给父类的引用,形如: SuperClass sup = subClass;

上转型对象不能使用子类新增成员(包括成员变量,成员方法),只能使用子类重写父类的方法,
被子类隐藏的父类变量;子类未重写的父类方法,未被隐藏的父类成员变量.


-----------------示例运用(多态的运用)--------------------
假如你在一个物流运输公司,有个客户要求你为他运输一定数量的产品到某地,使用某种交通工具.那我们假设你的管理程序中有Truck类,Train类,Plane类专门用来实现使用不同交通工具的成本计算,都有方法cost(Double weight,Double space);那么,问题出来了.客户对于运输器种类是可选择的,你是不是要对每种运输器new个实例放到不同的service方法中为客户服务呢?
很明显这么做有很多代码重复,而且效率太低.那么为什么不构造一个运输工具的父类:
public class Conveyance{
protected weight;
protected space;
public abstract Double cost(Double weight,Double space);
}
然后子类Truck,Plane,Train分别实现cost方法
再构造一个工厂类为客户制造子类实例
public class ConveyanceFactory{
public static Conveyance getConveyance(String which){
if(which.equils("Truck")){return new Truck();}
else if(which.equils("Train")){return new Train();}
else if(which.equils("Plane")){return new Plane();}
else{return null;}
}
}
服务程序的方法实现:
public double transportCost(String type,Double weight,Double space){
Conveyance c;Double cost;
c = ConveyanceFactory.getConveyance("type");
cost = c.cost(weight,space);
return cost;
}
看上面服务层的代码多简单‘,而且在MVC层次结构中方法和类的设计也和面向对象.这就是上塑造型给我们带来的好处咯
这回就方便了,需要Truck的时候,客户只要告诉你他要用卡车运输运多少距离多远.那业务员就在option按扭里面选择”卡车”在文本框里输入重量多少距离多远.veiw层把数据传给controler处理成我们的服务程序需要的数据类型.然后服务程序被controler调用,用transportCost方法计算出成本返回给veiw,显示给业务员,业务员就可以告诉客户需要支付多少钱啦‘
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值