面向对象编程的三个基本特征:封装、继承和多态。
一、封装
1、什么是封装?
封装即隐藏对象的属性和实现细节,仅对外公开接口。在C++中就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
2、封装的功能
隐藏细节,使代码模块化。
3、类的成员访问权限
一个类的成员(属性和函数),有以下3种可能的访问权限:
- public:所有人均可访问。
- protected:只有本类和本类的派生类中的成员函数可以访问。
- private:只有本类的成员函数可以访问。
二、继承
1、什么是继承?
继承是指可以让某个类型的对象获得另一个类型的对象的功能(属性和函数)的方法。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“父类”或“基类”或“超类”。
2、继承的功能
代码重用。使子类可以拥有父类的属性和方法,也可以定义自己特有的属性和方法,或重新定义父类的方法。
3、实现方式
- 实现继承:直接使用基类的属性和方法而无需额外编码的能力;
- 接口继承:仅使用属性和方法的名称、但是子类必须提供实现的能力;
4、继承权限
无论哪种权限,父类中private的成员都对子类不可见。
- public:父类中的public和protected的成员在子类中仍为public和protected。
- Protected:父类中public和protected的成员在子类中都变成了protected权限。
- Private:父类中public和protected的成员在子类中都变成了private权限。
5、例
#include<iostream>
using namespace std;
class A{
public:
int x;
void sety(int Y) { y = Y;}
protected:
int y;
private:
int z;
};
class B: public A{
public:
void test(){
cout<<x<<endl
<<y<<endl;
//cout<<z<<endl; //编译错误,子类B不能访问父类A的私有成员c
}
};
int main(){
B b;
b.x = 1;
// b.y = 2; //int b对于class B来说是protected权限,只能由本类或本类的派