三十一、多态性、动态类型 和 动态绑定(四)id类型 和 静态类型

既然  id类型的变量  可以存储  任何类型的物件,那么  为什么  不用  id类型的变量  来存储  所有类型的物件呢?有  几个原因  使  你  不愿意  这样做。

首先,当你  创建  某一类型的变量  来存储  某个特定类型的物件时,你用的  是  静态类型。静态的意思  就是  这个类型的变量  从头到尾  只存储  同一个类型的物件。于是  在这个变量当中  物件的类型  是  提前确定好了的  或者  是  静态的。当你  使用  静态类型时,编译器  会尽其所能  保证  某个类型的变量  从头到尾  只存储  这个类型的物件。同时  编译器  也会确保  对某个物件采取的措施  的确  适用于  这个类型的物件,如果  对某个物件采取的措施  不适用于  这类物件,编译器  就会发出  错误警告。

如果  用  id类型的变量  存储  某个物件,那么  编译器  就不会检查  对这个物件所采取的措施  是否适用于  这类物件。

然而,如果  能  在程序运行的时候  检查  对某个物件所采取的措施  是否适用于  这类物件的话,那  为什么  还要  使用  静态类型呢?之所以  要  使用  静态类型,是因为  与其  在程序运行的时候  发生  错误,还不如  在编译的时候  就发现  错误  并且  予以修正。作为  一名开发者,你  不见得  是  最终的用户。如果  全部  使用  id类型的话,最终  发现  某些措施  无法适用于  某类物件的人  就是  可怜  而且  无辜的用户了。

使用  静态类型的另外一个原因  就是  这样  可以使  你的程序  更加容易  被人读懂(也  包括  开发者自己)。对比一下  下面两行语句:

你  认为  哪行语句  使  变量fractionOne的作用  更加  清楚?静态的类型  和  具有意义的变量名称  合在一起  会使  你的程序  变得  不言自明。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值