ESP32上的面向对象(2)
ESP32上的面向对象(2)
继承
继承机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。
类的权限
一共有3种访问权限,分别是public、private和protected。
1 | class DevBoard { |
可以对这三种控制权限总结如下表:
访问权限 | public | protected | private |
---|---|---|---|
对本类 | 可见 | 可见 | 可见 |
对子类 | 可见 | 可见 | 不可见 |
对外部调用方 | 可见 | 不可见 | 不可见 |
继承的格式
1 | class 新类的名字:继承方式 继承类的名字{}; |
以上面的 DevBoard 为例:
1 | class ESP32Board : public DevBoard { |
ESP32Board 是新类的名字,public 是继承方式,DevBoard 是要继承的类。其中,DevBoard被称为基类,ESP32Board被称为派生类。
继承后的权限
继承后的子类访问权限如下表所示:
类成员/继承方式 | public继承 | protected继承 | private继承 |
---|---|---|---|
基类public成员 | 派生类的public成员 | 派生类的protected成员 | 派生类的private成员 |
基类protected成员 | 派生类的protected成员 | 派生类的protected成员 | 派生类的private成员 |
基类private成员 | 派生类中不可见 | 派生类中不可见 | 派生类中不可见 |
继承的构造函数
调用顺序:
- 子类对象在构造时,首先调用父类的构造函数再调用子类的构造函数。
- 当父类的构造函数中有参数时,必须在子类的初始化列表中显示调用
- 子类析构时首先调用子类析构,再调用父类析构函数
- 子类的成员变量和父类的成员变量同名时, 子类的同名变量会屏蔽父类的。但在子类中仍可使用父类名::使用父类的同名成员
示例: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
26
27
28
29
30class DevBoard{
public:
DevBoard(int flash_p,int ram_p){
_flash = flash_p;
_ram = ram_p;
}
~DevBoard(){
}
private:
int _flash;
int _ram;
protected:
};
class ESP32 : public DevBoard{
public:
ESP32(String wifi_p, int flash_p,int ram_p) : DevBoard(flash_p,ram_p){
_wifi = wifi_p;
}
~ESP32(){
}
private:
String _wifi;
protected:
};
void setup()
{
ESP32 esp32("5GHz",2048,256);
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Star!