在 C++ 中,当派生类只有一个基类时,称为单继承,同时,在 C++ 中,也是支持多继承的,多继承,也就是一个派生类有多个基类。
多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 等干脆取消了多继承。
class D: public A, private B, protected C{
//类D新增加的成员
}
我们定义了类 D,同时它以公有的方式继承 A 类,以私有的方式继承 B 类,以保护的方式继承 C 类。D 根据不同的继承方式获取 A、B、C 中的成员,确定它们在派生类中的访问权限。
子类继承多个父类时,就称为多继承
#include <iostream>
using namespace std;
//工人类
class Worker
{
public:
Worker()
{
cout << "Call Worker" << endl;
}
~Worker()
{
cout << "Call ~Worker" << endl;
}
};
//儿童类
class Children
{
public:
Children()
{
cout << "Call Children" << endl;
}
~Children()
{
cout << "Call ~Children" << endl;
}
};
//童工类
class ChildrenWorker:public Worker, public Children
{
public:
ChildrenWorker()
{
cout << "Call ChildrenWorker" << endl;
}
~ChildrenWorker()
{
cout << "Call ~ChildrenWorker" << endl;
}
};
int main(void)
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
ChildrenWorker childWorker;
return 0;
}
程序运行后,控制台输出如下:
我们定义了一个 ChildrenWorker 类,其共有继承了 Worker 类和 Children 类,这里,一个子类有两个父类,这就是多继承。
子类继承多个父类时,就称为多继承
#include <iostream>
#include <string>
using namespace std;
//工人类
class Worker
{
public:
Worker()
{
cout << "Call Worker" << endl;
}
~Worker()
{
cout << "Call ~Worker" << endl;
}
public:
float salary;
};
//儿童类
class Children
{
public:
Children()
{
cout << "Call Children" << endl;
}
~Children()
{
cout << "Call ~Children" << endl;
}
public:
float score;
};
//童工类
class ChildrenWorker:public Worker, public Children
{
public:
ChildrenWorker(string name):m_name(name)
{
cout << "Call ChildrenWorker" << endl;
}
void info()
{
cout << "Name = " << this->m_name << " Salary = " << this->salary << " Score = " << this->score << endl;
}
~ChildrenWorker()
{
cout << "Call ~ChildrenWorker" << endl;
}
private:
string m_name;
};
int main(void)
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
ChildrenWorker childWorker("HaiCoder");
childWorker.salary = 100;
childWorker.score = 99;
childWorker.info();
return 0;
}
程序运行后,控制台输出如下:
我们可以看到,我们使用了 ChildrenWorker 公有继承了 Worker 类和 Children 类,同时,ChildrenWorker 类从 Worker 类和 Children 类继承了所有的非私有的成员属性和方法。
在 C++ 中,当派生类只有一个基类时,称为单继承,同时,在 C++ 中,也是支持多继承的,多继承,也就是一个派生类有多个基类。