C语言继承性
来源:岁月联盟
时间:2009-02-18
建筑物分类的情况。
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所需要的封装性。
请记住,派生类能直接存取它自己的成员函数和基类的公有成员函数。