封装、继承、多态
1、封装主要是隐藏内部代码;
2、继承主要是复用现有代码;
is-A,即继承关系,关系具有传递性
3、多态
多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。
C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。
在C++中:
class A { public: A(){} virtual void foo() { cout<<"This is A."<<endl; } }; class B: public A { public: B(){} void foo() { cout<<"This is B."<<endl; } }; int main(int argc, char *argv[]) { A *a = new B(); a->foo(); if(a != NULL) delete a; return 0; }
这将显示:
This is B.
如果把virtual去掉,将显示:
This is A.
前面的多态通过使用虚函数virtual void foo()来实现。