[Cpp] C++ 面向对象

一. 面向对象基础

1. 漫谈面向对象编程

下图生动形象的描述了面向对象编程

咳咳...放错了   是这个才对


基本的面向对象编程包括了这些内容:继承 封装 多态 抽象(这个不算是重点)

1.1 继承 & 多态

1.1.1 我们举一个简单的例子:
世界上这么多的生物和东西,如果我们需要用编程来说明这个世界的话,统统的针对单个物件都各一个定义.
那么就会产生不少的浪费,导致程序也很难维护,在这个时候,聪明的程序大佬就想出了一个好办法---将世界上面的东西分成有生命的,和没有生命的;
有生命的这个类型中又可以划分成动物,植物,微生物等等.
是不是发现了点东西--不管是动物还是植物还是微生物都是有生命的,都继承自有生命的类型,同样的也具有相关的方式方法;
1.1.2 可能还是有点抽象,下面在举一个例子:
家中如果有猫的小伙伴应该知道,猫的种类繁多,加菲猫啊\暹罗猫啊\波斯猫啊\橘右京啊...
但是它们都是猫,换句话说就是都继承自猫类--都会喵喵叫,吃猫粮,玩毛线球...
但是不同品种的猫又有不同于品种的特征和属性 -- 这个就是多态;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//下面的是猫的来源,猫类 Cat
class Cat{
public:
void NekoMiaow(); //猫叫
void NekoEat(); //吃猫粮
void NekoPlay(); //玩毛线
};

//不同的猫继承自猫类
class Garfield : Cat{
public:
// void NekoMiaow(); //猫叫
// void NekoEat(); //吃猫粮
// void NekoPlay(); //玩毛线

void GarfieldHulu(); //睡觉打呼噜
};

class SiameseCat : Cat{
public:
// void NekoMiaow(); //猫叫
// void NekoEat(); //吃猫粮
// void NekoPlay(); //玩毛线
void SiameseCatIndifferent(); //暹罗的高冷
};

1.2 封装

我们将数据和行为相结合,组成一个有机的整体,需要的时候我们只需要让对象自己调用方法即可,不需要我们来操心
比如,你家的猫饿了,你听到了它求食的呼喊 -- "miaow,miaow" : 注意这里,你的猫饿了,是它自己饿了,"饿了叫"是它的方法,不需要其他人来帮它叫
这就是猫把自己的饥饿值(属性)和求食(方法)封装到了一起,形成了一个完整的类,通过这个类,可以实例化出来一个相对完善的SiameseCat对象;
1
2
3
4
5
6
7
8
9
10
class SiameseCat : Cat{
public:
int HungryProcess; //饥饿值

// void NekoMiaow(); //猫叫
// void NekoEat(); //吃猫粮
// void NekoPlay(); //玩毛线
void NekoMiaowForFoods(); //猫叫求食--------------
void SiameseCatIndifferent(); //暹罗的高冷
};

二. 面向对象进阶