C++ 层级继承
继承的概念在现实世界中是非常相似的。就像一个儿子继承了父亲的性质(特征和行为)一样,父亲本身继承了儿子的祖父的性质。在编程规范中,当一个类继承另一个类(基类)的性质时会发生继承。
现在让我们理解层级继承的概念。
定义
正如名字定义的那样,它是类的层次结构。有一个基类和多个派生类。此外,派生类也被其他类继承。因此,形成了一个类似树形的层次结构。
这里A类是基类。B类和C类是A类的派生类。
D类和E类是B类的派生类。F类和G类是C类的派生类。形成了层级继承的结构。
层级继承在哪里使用?
在需要维护层次结构的情况下使用。例如,一个组织的数据库以层次结构的格式存储。组织有不同的部门,如IT、计算机科学、土木工程、机械工程等。每个部门都有相同的属性,如学生姓名、学号、年级等,它们属于一个学生类。因此,所有部门都继承了学生的属性,按照层次继承的格式进行操作。
语法
Class Parent
{
statement(s);
};
Class Derived1: public Parent
{
statement(s);
};
Class Derived2: public Parent
{
statement(s);
};
class newderived1: public Derived1
{
statement(s);
};
class newderived2: public Derived2
{
statement(s);
};
Class Parent(父类)是基类,Derived1(派生类1)和Derived2(派生类2)是继承自Parent(父类)的类。进一步,newderived1(新的派生类1)是继承自Derived1(派生类1)的类,newderived2(新的派生类2)是继承自Derived2(派生类2)的类。可以有任意数量的基类被n个派生类继承。
代码示例
#include <iostream>
using namespace std;
class A // Base class
{
public:
int x, y; // data members
voidgetdata() // to input x and y
{
cout<< "Enter value of x and y:\n";
cin>> x >> y;
}
};
class B : public A //B is derived from class base
{
public:
void product()
{
cout<< "\nProduct= " << x * y <<endl; // Perform product
}
};
class C : public A //C is also derived from class base
{
public:
void sum()
{
cout<< "\nSum= " << x + y; // Perform sum
}
};
int main()
{
B obj1; //object of derived class B
C obj2; //object of derived class C
obj1.getdata(); // input x and y
obj1.product();
obj2.getdata();
obj2.sum();
return 0;
}
输出
说明
我们有一个基类A,它有两个数据成员x和y。它还使用函数getdata()输入数据成员的值。类B继承了类A,并使用继承的数据成员x和y来执行乘法操作。
类C还调用了基类的getdata()函数,并使用继承的数据成员计算x和y的乘积。