面向对象编程是利用类和对象编程的一种思想。万物皆可归类,类是对于世界事物的高度抽象,不同事物之间有不同的关系,一个类自身与外界的封装关系,一个父类和子类的继承关系,一个类与多个类的多态关系。万物皆对象,对象是具体的世界事物,面向对象的三大特征:封装、继承、多态。
封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。属性的封装:使用者只能通过事先定制好的方法来访问数据,可以方便的加入逻辑控制,限制对属性的不合理操作;方法的封装:使用者按照既定的方式调用方法,不必关心方法的内部实现,便于使用,便于修改,便于增强代码的可维护性。
继承是父类和子类的关系;继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。在本质上是特殊——一般的关系,即常说的is-a的关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。从多种实现类中抽象出一个基类,使其具有多种实现类的共同特性,当实现类用extends关键字继承了父类后,实现类就有了这些相同的属性。继承的类叫派生类或者子类,被继承的类叫父类或者超类或基类。比如从猫类、狗类、虎类中可以抽象出一个动物类,具有猫、狗、虎类的共同特征(吃、跑、叫等)。java通过extends关键字来实现继承,父类中通过private关键字定义的变量和方法不会被继承,不能在子类中直接操作父类中private定义的变量和方法。继承避免了对一般类和特殊类之间共同特征进行的重复描述,通过继承可以清晰的表达每一项共同特征所适应的概念范围,在一般类中定义的属性和操作适用于这个类本身以及它一下的每一层特殊类的全部对象。运用继承原则使得系统模型比较简练清晰。
多态是说类与类的关系;相比于封装和继承,多态三大特性中比较难的一个,封装和继承最后归结于多态,两个类由继承关系,存在有方法的重写,故而可以在调用时有父类引用指向子类对象。多态必备三个要素:继承、重写、父类引用指向子类对象。