前言:
封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码块(类);泛型是为了显现算法与类型脱离;它们的目的都是为了实现代码重用;而多态则是为了实现接口重用。
一、多态
1.多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。
a.编译时多态性:通过重载函数实现
b运行时多态性:通过虚函数实现。
2.运行时多态可以简单的概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数。多态是面向对象编程领域的核心概念。在C++中 通过虚函数virtual function实现。
3.(最抽象解释)多态性是允许你将父对象设置成为和它的一个或多个子对象相等的技术,赋值之后,父对象就可以根据当前赋给它的子对象的特性以不同的方式运作。其本质就是将子类类型的指针赋值给父类型的指针,只要这样的幅值发生了,多态也就产生了,因为实行了向上映射。
二、泛型
泛型编程是一种基于发现高效算法的最抽象表示的编程方法,所谓泛型编程就是独立于任何特定类型的方式编写代码,即做到算法与类型脱离。
STL的容器、迭代器、算法都是泛型编程的例子,而模板泛型编程的基础,模板是创建类或函数的基础或公式。
template <typename T>。
三、继承
图中三种颜色表示三种不同的访控属性。
绿色表示子类成员和外部均可以访问;
黄色表示子类成员可以访问,但外部不可以访问;
红色表示子类成员和外部都不可以访问。
public继承:
1.基类成员对派生类的可见性对派生类来说:基类的public成员和protected成员可见(即可被派生类的成员函数调用);基类的public成员和protected成员作为派生类的成员时,他们都保持原有的状态;基类的private成员不可见,不可被访问。
2.派生类的实例对象,只可调用(访问)基类的public成员,即只有基类的public成员对派生类的实例对象可见。基类其他的成员不行。
private继承:
1.基类成员对派生类的可见性对派生类来说:基类的public成员和protected成员可见(即可被派生类的成员函数调用);基类的public成员和protected成员作为派生类的私有成员,并且不能被这个派生类的子类访问;基类的private成员不可见,不可被访问。
2.派生类的实例对象,基类的所有成员都不可见。
protected继承:
1.基类成员对派生类的可见性对派生类来说:基类的public成员和protected成员可见(即可被派生类的成员函数调用);基类的public成员和protected成员作为派生类的protected成员,并且不能被这个派生类的子类访问;基类的private成员不可见,不可被访问。
2.派生类的实例对象,基类的所有成员都不可见。
虚函数继承和虚继承
虚函数继承就是覆盖,是为了解决多态性的问题。
虚继承是多重继承中特有的概念,继承就是为了节约内存的。