C++继承方式
从基类派生出派生类,派生类继承基类的继承方式有三种:public、protected 和 private。在未指定的情况下编译器会默认继承方式为 protected 或 private 方式。
具体示例可以参考上一节中的例1,在此就不再重新举例了。
【例 1】
本类同样使用上一节中的示例,此时继承方式改为了 protected 继承,我们再来分析一下 codingbook 中类成员的属性问题,具体见下表。
【例 2】
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
1) public继承方式
- 基类中所有 public 成员在派生类中为 public 属性;
- 基类中所有 protected 成员在派生类中为 protected 属性;
- 基类中所有 private 成员在派生类中不可访问。
具体示例可以参考上一节中的例1,在此就不再重新举例了。
2) protected继承方式
- 基类中的所有 public 成员在派生类中为 protected 属性;
- 基类中的所有 protected 成员在派生类中为 protected 属性;
- 基类中的所有 private 成员在派生类中仍然不可访问。
【例 1】
enum language{cpp, java, python,javascript, php, ruby};
class book
{
public:
void setprice(double a);
double getprice()const;
void settitle(char* a);
char * gettitle()const;
void display();
private:
double price;
char * title;
};
class codingbook: protected book
{
public :
void setlang(language lang);
language getlang(){return lang;}
private:
language lang;
};
本类同样使用上一节中的示例,此时继承方式改为了 protected 继承,我们再来分析一下 codingbook 中类成员的属性问题,具体见下表。
| codingbook类成员 | 成员属性 | 来源 |
|---|---|---|
| price | 不可访问 | 继承自 book 类 |
| title | 不可访问 | 继承自 book 类 |
| lang | private | codingbook 新增 |
| setprice | protected | 继承自 book 类 |
| settitle | protected | 继承自 book 类 |
| getprice | protected | 继承自 book 类 |
| gettitle | protected | 继承自 book 类 |
| dispaly | protected | 继承自 book 类 |
| setlang | public | codingbook 新增 |
| getlang | public | codingbook 新增 |
3) private继承方式
- 基类中的所有 public 成员在派生类中均为 private 属性;
- 基类中的所有 protected 成员在派生类中均为 private 属性;
- 基类中的所有 private 成员在派生类中均不可访问。
【例 2】
enum language{cpp, java, python,javascript, php, ruby};
class book
{
public:
void setprice(double a);
double getprice()const;
void settitle(char* a);
char * gettitle()const;
void display();
private:
double price;
char * title;
};
class codingbook: private book
{
public :
void setlang(language lang);
language getlang(){return lang;}
private:
language lang;
};
同样,我们来分析一下本例中的 codingbook 类中所有成员的成员属性,具体见下表。| codingbook类成员 | 成员属性 | 来源 |
|---|---|---|
| price | 不可访问 | 继承自 book 类 |
| title | 不可访问 | 继承自 book 类 |
| lang | private | codingbook 新增 |
| setprice | private | 继承自 book 类 |
| settitle | private | 继承自 book 类 |
| getprice | private | 继承自 book 类 |
| gettitle | private | 继承自 book 类 |
| dispaly | private | 继承自 book 类 |
| setlang | public | codingbook 新增 |
| getlang | public | codingbook 新增 |
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。