在编程领域,经常会遇到类似属性,但细节或行为存在细微差别的组件。在这种情况下,有2种解决方法。
1、将每个组件声明为一个类,并在每个类中实现所有的属性,但这将重复实现相同的属性。
2、使用继承,从一个基类派生出类似的类,在基类中实现所有的通用功能,并在派生类中覆盖基本功能,以实现让每一个类都有独一无二的功能。
显然第二种方法更佳,C++派生语法如下所示:
class base
{
//……base class member
};
class derived:public/protected/private base
{
//……derived class member
};
下面介绍继承的方法:
保护继承:使用访问限定符protected,允许派生类和友元类访问它,但禁止在继承结构外部(包括main())访问它。可以对需要继承的基类属性进行保护。这是面向对象编程的一个非常重要的方面,它与数据抽象和继承一起确保派生类可安全的继承基类的属性 ,同时禁止在继承层次结构外部对其进行修改。(子类的子类也能访问基类的公有成员)
私有继承:使用关键字private,在派生类的实例中,基类的所有公有成员和方法都是私有的----不能从外部访问。从继承层次结构外部看,私有继承并非is-a关系。私有继承使得只有子类才能使用基类的属性和方法,因此被称为has-a关系。
切记:
1、要建立is-a关系,务必创建公有继承层次结构,要建立has-a关系,务必创建私有或保护继承层次结构。
2、公有继承意味着继承派生类的类能访问基类的公有和保护成员。
3、私有继承意味着继承派生类的类也不能访问基类的成员。
4、保护继承意味着继承派生类的类能访问基类的公有和保护方法。
5、务必牢记,无论继承关系是什么,派生类都不能访问基类的私有成员。‘
6、类的继承关系默认为私有继承,而结构则默认为公有。