您的位置:首页 > 编程语言 > C语言/C++

C++基础:继承访问属性

2016-07-20 22:30 459 查看
继承访问属性:

继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。

层次概念是计算机的重要概念。通过继承的机制可对类分层,提供类型/子类型的关系。

C++通过类派生的机制来支持继承。被继承的类称为基类或超类,新产生的类为派生类或子类。

基类和派生类的集合称作类继承层次结构。

    

如果基类和派生类共享相同的公有接口,则派生类被称作基类的子类型。

       

派生反映了事物之间的联系,事物的共性与个性之间的关系。 

派生与独立设计若干相关的类,前者工作量少,重复的部分可以从基类继承来,不需要单独编程。

由基类派生出派生类的定义的一般形式为:

class 派生类名:访问限定符  基类名1,访问限定符 基类名2

{
......

};

其中基类1,基类2,……是已声明的类。

 

在派生类定义的类体中给出的成员称为派生类成员,它们是新增加成员,它们给派生类添加了不同于基类的新的属性和功能。派生类成员也包括取代基类成员的更新成员。

如果一个派生类可以同时有多个基类,称为多重继承,这时的派生类同时得到了多个已有类的特征。

一个派生类只有一个直接基类的情况称为单一继承。

子类继承父类成员后的属性变化:

1.对公有继承:

子类继承的父类成员属性不变;

2.对保护继承:

子类继承的父类成员公有属性变为保护属性,保护和私有属性不变

3.对私有继承:

子类继承的父类成员所有属性变为私有属性。

*子类的所有方法都可以直接访问公有和保护成员;

*对象只能直接访问公有成员;

*当发生私有继承时,父类结束往下继承;


举例:

<span style="font-size:18px;">#include <iostream>
using namespace std;

class Base
{
public:
Base():data(0)
{
}
~Base()
{
}
public:
void Show_Base()const
{
cout<<"Show Base:"<<data<<endl;
}
protected:
void Print_Base()const
{
cout<<"Print Base:"<<data<<endl;
}
private:
int data;
};

///////////////对子类的方法来说:

class D : public Base
{
public:
D():x(0)
{
}
~D()
{
}
public:
void Show_D()const   //1.子类的方法可以直接访问父类的公有和保护成员,而不能直接访问父类私有成员
{
Print_D();        //2.子类的方法可以通过调用父类的公有和保护成员,来间接访问父类的私有成员
Print_Base();
}
protected:
void Print_D()const
{
Show_Base();
cout<<"Print D:"<<endl;
}
private:
int x;
};

int main()
{
D d;
d.Show_Base();       //1.子类的对象可以直接访问父类的公有成员
//d.Print_D();           //错误,2.子类的对象不能访问自身的保护和私有成员
//d.Print_Base();     //错误,3.子类的对象更不能直接访问父类的保护和私有成员

d.Show_D();       //4.子类的对象可以通过调用自身的公有方法(或通过公有方法调用的保护方法)去访问父类的保护成员

return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: