在一个对象内部 , 某些代码和(或)某些数据可以是私有的 , 不能被外界访问 。 通过这种方式 , 对象对内部数据提供了不同级别的保护 , 以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分 。
继承
继承是可以让某个类型的对象获得另一个类型的对象的属性的方法 。 它支持按级分类的概念 。 例如 , 知更鸟属于飞鸟类 , 也属于鸟类 。 就像图5中描绘的那样 , 这种分类的原则是 , 每一个子类都具有父类的公共特性 。
在OOP中 , 继承的概念很好的支持了代码的重用性(reusability) , 也就是说 , 我们可以向一个已经存在的类中添加新的特性 , 而不必改变这个类 。 这可以通过从这个已存在的类派生一个新类来实现 。 这个新的类将具有原来那个类的特性 , 以及新的特性 。 而继承机制的魅力和强大就在于它允许程序员利用已经存在的类(接近需要 , 而不是完全符合需要的类) , 并且可以以某种方式修改这个类 , 而不会影响其它的东西 。
注意 , 每个子类只定义那些这个类所特有的特性 。 而如果没有按级分类 , 每类都必须显式的定义它所有的特性 。
多态
多态是OOP的另一个重要概念 。 多态的意思是事物具有不同形式的能力 。 举个例子 , 对于不同的实例 , 某个操作可能会有不同的行为 。 这个行为依赖于所要操作数据的类型 。 比如说加法操作 , 如果操作的数据是数 , 它对两个数求和 。 如果操作的数据是字符串 , 则它将连接两个字符串 。
图6演示了一个函数处理不同数量、不同类型的参数 。 就像某个单词在不同的上下文中具有不同的含义 。
多态机制使具有不同内部结构的对象可以共享相同的外部接口 。 这意味着 , 虽然针对不同对象的具体操作不同 , 但通过一个公共的类 , 它们(那些操作)可以通过相同的方式予以调用 。 多态在实现继承的过程中被广泛应用 。
面向对象程序设计语言支持多态 , 术语称之为“one interface multiple method(一个接口 , 多个实现)” 。 简单来说 , 多态机制允许通过相同的接口引发一组相关但不相同的动作 , 通过这种方式 , 可以减少代码的复杂度 。 在某个特定的情况下应该作出怎样的动作 , 这由编译器决定 , 而不需要程序员手工干预 。
在多函数程序中 , 许多重要的数据被声明为全局变量 , 这样它们才可以被所有的函数访问 。 每个函数又可以具有它自己的局部变量 。 全局变量很容易被某个函数不经意之间改变 。 而在一个大程序中 , 很难分辨每个函数都使用了哪些变量 。 如果我们需要修改某个外部数据的结构 , 我们就要修改所有访问这个数据的函数 。 这很容易导致bug的产生 。
在结构化程序设计中 , 另一个严重的缺陷是不能很好的模拟真实世界的问题 。 这是因为函数都是面向过程的 , 而不是真正的对应于问题中的各个元素 。
面向过程的程序设计的一些特点如下:
·强调做(算法);
·大程序被分隔为许多小程序 , 这些小程序称为函数;
·大多数函数共享全局数据;
·数据开放的由一个函数流向另一个函数 。 函数把数据从一种形式转换为另一种形式 。