一、面向对象的三个基本特征
(1)封装
也就是把客观事物封装为抽象的类,并且类可以把自己的数据和方法只让可信的对象或者类进行操作,不可信的类进行隐藏。
(2)继承
就是可以使用现有类的所有功能,并在无需重新编写的情况下对这些功能进行扩展。通过继承产生了基类和派生类。继承是一种从一般到复杂的过程。
(3)多态
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
实现多态有两种:覆盖和重载。
二、重载
概念:函数重载是指在同一个作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。函数的重载其实就是“一物多用”的思想(这里指的物就是函数名),其实不仅是函数可以重载,运算符也可以重载的。
(1)同一作用域类,一般指在同一个类当中;
(2)函数名相同;
(3)参数列表不同;
(4)virtual关键字可有可无。
三、覆盖
概念:函数的覆盖是指在继承过程中,派生类会覆盖掉基类相同函数名,相同参数列表的函数。被称为覆盖。
(1)不同的作用域,分别位于派生类和基类;
(2)函数名相同;
(3)参数列表相同;
(4)基类函数必须有virtual关键字。
四、隐藏
概念:于覆盖概念对应,被覆盖的函数称为隐藏。
(1)基类和派生类函数名字相同;
(2)基类和派生类的成员变量名字相同;
(3)派生类对象、指针、引用类型变量访问基类中被隐藏的成员时,要在成员前面加上“类型名::”。