变量与对象
变量声明是指对确定变量的名称和类型。对于Java这样的强类型语言,在变量初始化之前首先就要完成变量的声明:
|
|
而在后续的操作中可以完成变量的初始化,并对值进行类型检查。
|
|
在面向对象的设计语言中,因为一切都是对象(除了基础类型,基础类型也可以转化为其包装类)的原则,声明变量起始就是声明类class,而class与type是等价的。在面向对象语言中,一旦变量的类型被声明,就意味着该变量允许的调用被确定了。
更恰当的说法应该是可以发送的消息就确定了.在面向对象中,我们可以把变对象视为一个独立的机器个体,比如说一个空调,他可以制冷,制热。我们可以通过遥控器来向这台空调发消息,比如温度,湿度,模式等。如果我们在使用这个个体时,仅提供了他部分功能的遥控器,那么我们仅仅能对其发部分消息,因为这个遥控器上仅仅有这些消息。
即我们获取的仅仅只一个map 变量声明 获取到了一个遥控器,实例化则将这个遥控器与具体的某台空调关联起来,可以通过遥控器向这台空调发消息。如果重新赋值,就是将遥控器与另一个空调关联,不管这个空调是家用还是商用,是否具有更多的功能。
这样,定义一个类,以及实例化一个类就区分开了。 一个类相当于一台空调的制作过程,内部构造,指定接受的消息的制造设计图,实例化就是找这个图样制造出来的一台空调。我们知道,制造一台空调需要很多的零部件,比如压缩机。变压器,电热丝等,想要制造这么一台空调,那么在制造之前我们必须获取他所有部件。 这部分实际上跟编程是不同的,因为在编程中,任务在空调中装的是一大堆遥控器。。。 这的确有些奇怪。
一台空调可以接受怎样的消息吶,首先是自己可以提供的,一般也就是自身状态的变化,或者对内部其他部件的发送消息;其次是别人需要的,我们一般对空调需要的只有简单的升温降温,风力,风向和模式,而不需要控制具体的电阻大小,通电状态等。
当然实际上可以接受怎么样的消息,还得看与之相关联的遥控器究竟是怎么定义的,他可以发怎么样的消息。如果遥控器只能发出制冷消息,那么空调就算提供了可以接受制热消息,但是没有发送者也无济于事。 这也是为什么可以使用接口和抽象类为什么可以作为变量的类型定义。记住,变量仅仅是一个遥控器。
变量的类型即指向的接口或类也仅仅指明遥控器可以发送的消息。 当赋值时就要将 遥控器的可发送消息和空调可接受的消息进行匹配,如果不匹配,编译错误。
|
|
在编程中,遥控器发送加热消息,空调接受到加热。这时空调获取消息体中的加热器遥控器,加热板遥控器发送消息,加热器接收消息。消息的传递一般必须经过遥控器。 要记住的是对象,即空调机本身是不变的,任何对象的转化知识影响了遥控器。
|
|
而变量类型的转换,就是指遥控器的转换。实际上空调实际存在于一个巨大的设备工厂,

但是工厂场地实在有限,所以,不时的需要工人去把设备给收回,销毁,让给其他设备的建立

这其实就是垃圾回收。就如我们所见,垃圾的回收是必要的,自动的垃圾回收,因为需要工人去定时巡视,所以需要消耗额外的资源,而且并非绝对即时。但是极大的方便了用户的操作。在JAVA中垃圾回收的机制便是如此,但根本是建立在对JAVA的类型机制上,所有类都是Object的子类,那么Object的遥控器就可以对所有的类使用。
