封装:
定义:就是将抽象得到的数据和行为相结合,形成一个有机整体,也就是将数据和代码进行有机的结合,形成类,其中的数据和函数都是类的成员,目的在于将对象的使用者和设计者分开.以提高软件的维护性和可修改性.
特性: 1.结合性,即就是将属性和代码结合.2.信息隐藏性,利用接口机制隐藏内部的实现细节,只留下接口给外界调用3.实现代码的重用.
继承:
定义 :继承就是新类从已有类那里得到已有的特性.类的派生指的是从已有的类产生新类的过程,原有的类成为基类(父类),产生的新类称为派生类(子类),其目的就是为了代码重用.
多态
定义:可以简单的概括为“一个接口,多种方法”,即用的是同一个接口但是效果各不相同,多态分为两种形式,一种是静多态,一种是动多态
动多态:是指程序在运行时才能确定调用那个函数,父类指针或引用指向子类对象,调用子类的函数,在编译时期无法确定调用那个函数。
使用时在父类中写一个虚函数,在子类中分别重写。用这个父类指针调用这个虚函数,它实际上会调用各自子类重写的虚函数。
运行期多态实现依赖的虚函数机制。当某个类声明了虚函数,编译器会将该类的对象安插在一个虚函数表指针,并为该类设计一张虚函数表,虚函数表中存放着该类虚函数地址,运行期间通过虚函数表指针和虚函数表去确定该虚函数的真正实现
优点:OOP设计重要特征,能够处理同一个继承下的益智、异质类集合
缺点:运行期间进行虚函数绑定,提高了程序的运行开销;庞大的虚继承层次,对接口的修改易影响类继承层次;由于虚函数在运行期间才绑定,所以编译无法对虚函数进行优化。