2
面向对象的编程语言就是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为:“程序=算法+数据”。面向对象编程语言为:“程序=对象+消息”。所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为映射到计算机程序上。属性则表示对象的数据,行为则表示对象的方法。封装是用一个自主式的框架,把对象的数据和方法连接在一起,形成一个整体。对象支持封装,是封装的基本单位。Java语言的封装性较强,那是因为Java无全程变量、无主函数。在Java中,绝大部分成员是对象,只有简单的数字类型(字符类型和布尔类型除外)。对于这些类型,Java提供了相应的对象类型包装,以便与其他对象交互操作。有关封装的原理如图1.1所示。
类将方法和属性值封装在其中
方法1
方法2
方法3
属性值1
属性值2
属性值3
图1.1
封装的原理示意图
多态性就是多种表现形式。具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整形、浮点型或字符型,不管存储的是何种数据,堆栈的算法实现都是一样的。针对不同的数据类型,编程人员不必手工选择,只需要使用统一方法名(参数不同),系统可以自动选择。运算符重载一直被认为是一种优秀的多态机制体现。由于考虑到运算符重载会使程序变得难以理解,所以Java最后还是把它取消了。有关多态的原理如图1.2所示。
方法体1方法体2方法体3方法体4
相同的方法名称
图1.2
多态的原理示意图
继承是指一个对象直接使用另一个对象的属性和方法。事实上,现实生活中遇到的很多实体,都具有继承的含义。例如,把汽车看成一个实体,它可以分成多个子实体,如:轿车、公交汽车等。以上子实体都具有汽车的特性,因此汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。子类可以继承父类的属性和方法,与其他面向对象编程语言不同,Java只支持单一继承。有关继承的原理如图1.3所如示。
3
父类的方法
父类的属性值
父类
通过子类继承父类
子类
子类自己的属性值
子类自己的方法
父类的属性值
父类的方法
图1.3
继承的原理示意图
1.1.3Java的平台无关性
Java的平台无关性是指用Java写的应用程序不用修改,就可以在不同的软硬件平台上运行。平台无关有两种:
源代码级和目标代码级。C和C++是具有一定程度的源代码级平台无关。源代码级平台无关表明了用C/C++写的程序无需修改,只需重新编译就可以在不同平台上运行。Java主要靠Java虚拟机JVM(JavaVirtualMachine),在目标代码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,其本身具有一套虚拟机器指令,并有自己的栈、寄存器组等。JVM通常是在
软件上而不是在硬件上实现的。目前,Sun系统公司已经设计实现了Java芯片,它主要使用在
网络计算机上。另外,Java芯片的出现也会使Java更加容易嵌入到家用电器中。在JVM上,有一个Java解释器,使用它来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器,将Java源程序编译为JVM的字节代码。任何机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。有关Java平台无关性的原理如图1.4所示。
C语言的源代码Java源代码
编译器不同平台的虚拟机
在不同平台上运行
Windows虚拟机