封装、继承、多态与其说是Java的三大特性,不如说是OOP语言的共同特性,这三种特性使得OOP语言有别于面向过程编程语言,具备更高的重用性、灵活性、扩展性。
封装:封装有两个部分,一是将数据和方法包装进类中;二是访问权限控制,即具体实现的隐藏。这两个部分共同被称为封装。封装的结果是产生一个同时带有特征和行为的数据类型。
继承:继承是代码的一种复用方式,和组合一样,都是利用现有类型生成新类型。Java采用单根继承结构,因此当创建一个类时,总是在继承,或者是继承了指定的类,或者是继承了Object类。继承时会自动得到基类中的所有的域和方法。通过继承得到的类可以当做基类看待。
多态:多态分离了“做什么”和“怎么做”,从另一角度将接口和实现分离开来。多态是与继承密切相关的,因为继承机制允许将同一基类导出的多种类型都视为同一类型(基类)看待,所以同一代码只要操作基类,也可以运行在这些不同的子类上,而子类通过方法重载,可以将基类的接口赋予自己的特性,多态机制使得同一代码在运行在不同的子类上时,可以表现出子类的特性,这是由Java的动态绑定来实现的。也就是我们可以只编写操作基类的代码,而运行时编译器会根据实际的对象类型将方法与对象进行绑定。这样的结果就是同一接口可能有不同的实现,因此称为多态。