目录
一、面向对象的三大特征
1.1特征
封装
继承
多态
1.2封装
1.2.1封装的概念
该公开的公开化,该私有的就隐藏掉
public:
private:
protected:
保护状态的成员的可访问范围比私有成员大,比公有成员小。能访问私有成员的地方都能访问保护成员。
保护状态的成员扩大的访问范围表现在:基类的保护成员可以在派生类的成员函数中被访问。
记住下图即可:
下图第二行是说,父类中的成员对同在父类中的成员的访问权限
下图第三行是说,子类中的成员对父类中的成员的访问权限
下图第四行是说,外部对父类的访问权限。
(父类其实就是基类,子类其实就是派生类。只不过叫法不一样)
1.2.2封装的作用
便于工作中的分工和分模块,如:加密解密,别人把加密
解密功能封装起来,对外仅提供一个接口,供其他人
使用。再比如让你写一个天气预报的程序,你会天气预报
知识吗,不会吧,那怎么写程序?你会发现先网上有封装
好的程序,这个程序提供了公开接口,你去用就行了。
防止不必要的扩展
就是说有些功能不让你使用,不让你进行扩展。以防止
产生事故。
1.3继承
1.3.1继承的概念
继承就是一种传承,可以把父类型中的数据传承到子类中。子
类除了传承了父类的数据之外,还可以对父类型进行扩展
其实继承就是,子把父类的空间完全复制下来了,并且子
还可以在这这个基础上扩展添加成员。
总的来说,记住下面这几个知识点即可:
注:
1、隐藏是指,其不能从父类中继承下来,其仅仅存在父类中
2、我们一般只用公开继承。私有继承和保护继承一般用不到
公开继承
父类:公开-保护-私有
子类:公开-保护-隐藏
私有继承
父类:公开-保护-私有
子类:私有-私有-隐藏
保护继承
父类:公开-保护-私有
子类:保护-保护-隐藏
1.3.2继承的语法
class A{
/*这是父类型*/
};
class B :public A{
/*B是A的子类型*/
};
class C :public A{
/*C是A的子类型*/
};
class D:public B{
/*D是B的子类型*/
};
1.3.3程序举例
#include <iostream>
using namespace std;
class Animal{
public:
string name;
int age;
void show(){
cout << "this is Animal show()" << endl;
}
};
class Dog:public Animal{
int legs;//增加的成员
public:
void fun(){
//增加的成员
cout << "狗可以看家" << endl;
}
};
int main(){
cout << sizeof(Dog) << endl;
Dog dog;
dog.name="testdog";
dog.show();
dog.fun