C++基础:继承访问属性
2016-07-20 22:30
459 查看
继承访问属性:
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。
层次概念是计算机的重要概念。通过继承的机制可对类分层,提供类型/子类型的关系。
C++通过类派生的机制来支持继承。被继承的类称为基类或超类,新产生的类为派生类或子类。
基类和派生类的集合称作类继承层次结构。
如果基类和派生类共享相同的公有接口,则派生类被称作基类的子类型。
派生反映了事物之间的联系,事物的共性与个性之间的关系。
派生与独立设计若干相关的类,前者工作量少,重复的部分可以从基类继承来,不需要单独编程。
由基类派生出派生类的定义的一般形式为:
class 派生类名:访问限定符 基类名1,访问限定符 基类名2
{
......
};
其中基类1,基类2,……是已声明的类。
在派生类定义的类体中给出的成员称为派生类成员,它们是新增加成员,它们给派生类添加了不同于基类的新的属性和功能。派生类成员也包括取代基类成员的更新成员。
如果一个派生类可以同时有多个基类,称为多重继承,这时的派生类同时得到了多个已有类的特征。
一个派生类只有一个直接基类的情况称为单一继承。
子类继承父类成员后的属性变化:
1.对公有继承:
子类继承的父类成员属性不变;
2.对保护继承:
子类继承的父类成员公有属性变为保护属性,保护和私有属性不变
3.对私有继承:
子类继承的父类成员所有属性变为私有属性。
*子类的所有方法都可以直接访问公有和保护成员;
*对象只能直接访问公有成员;
*当发生私有继承时,父类结束往下继承;
举例:
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。
层次概念是计算机的重要概念。通过继承的机制可对类分层,提供类型/子类型的关系。
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>
相关文章推荐
- 图书管理系统(c语言课程设计)
- C++提高5 STL算法 :查找,统计,排序,拷贝,替换,算术,集合 |STL 案例:学校演讲比赛介绍
- 备忘录模式-c++实现
- 大话设计模式03----单一职责原则
- 已知先序、中序求后序;已知中序、后序求先序(C++)
- 大数运算模板(C语言)
- 动态规划的思考(三)
- 代刷题目分类(二)
- 大话设计模式02----商场促销-策略模式
- Combinations
- C++中关于堆和栈的说法,哪个是错误的:
- C++ Learning (1)
- C++不是类型安全的语言
- 读书笔记:Effective C++(二)
- C语言中FILE相关与CodeBlocks命令行(windows)
- C语言之内存覆盖
- c++11多线程 生产者-消费者模型/条件变量condition_variable
- C++的类为什么要用指针
- Sort Colors
- C++中new和delete的用法注意。