C语言继承性
继承性是面向对象程序设计语言的主要特征之一。在C++中,继承性是通过允许一个类把另一个类放入到它的说明中实现的。继承性允许建立类从一般到最特殊的层次,这个过程要求首先说明一个基类,基类说明了那些由派生的所有类共有的性质,代表了最一般的描述。由基类派生的类通常叫派生类。一个派生类包括“样板”基类的所有特点,且增加了派生类专有的性质。为了说明它是如何工作的,下面的例子说明了一个给不同类型的
建筑物分类的情况。
building类的说明如下所示,它用作两个派生类的基类:
class building
{int rooms
int floors;
int areal
public:
void set—rooms(int num);
int get—rooms();
void set—floors(int num)l
int get—floors();
void 8et—area(int num)l
int get—area()1
};
就这个例子而言,因为所有建筑物都有多少个房间、一层或几层楼以及总面积三个共有的特性,building类的说明包含了这几个特性,以set开头的成员函数设置专有数据的值,以get开头的成员函数返回它们的值。
现在可以用建筑物的这个广义定义描述特殊类型的建筑物的派生类了。例如,下面是名为house的派生类,注意building是如何被继承的。
//house是基类building的派生类
class house:public building
{int bedrogms;
int baths;
public:
void set—bedrooms(int num);
int get—bedrooms();
void set—baths(int num);
int get—baths();
};
继承的一般形式是:
class新类名:[access3基类名
{
//新的类体
}
其中,access是可选的,如果出现,它必然是public、protected或private。若缺省,贝0认为是私有派生private。使用public意味着基类的所有公有元素在继承它的派生类中也是公有的,保护成员能被继承。
在上面例子中,类house的成员存取类building的成员函数,就像它们是在house中说明的一样。但是,house的成员函数不能存取building的专有部分,这点很重要。尽管house继承了building,但它也只能存取building的公有部分。在这种方法中,继承并不妨碍OOP所需要的封装性。
请记住,派生类能直接存取它自己的成员函数和基类的公有成员函数。