浅谈C++之继承机制
2015-07-31 16:46
267 查看
以前总是看别人的博客,学到了很多东西,很少自己写博客,为了回馈大家,今天我也来开个张,那么就从我熟悉的C++写起吧。
作为一门出色的面向对象编程语言,C++是博大精深的,其封装、继承和多态的重要特点贯穿始终,接下来谈一谈我对继承的理解。既然是继承,肯定至少存在两个,即被继承者和继承者,也就是C++中的基类(父类)和扩展类(子类)。那么基类和扩展类是如何发生联系的呢?
首先,需要了解一下访问权限,类中的每一个成员变量和成员方法都是有访问权限的,分为public、protected和private三种类型。属于public类型的成员(包括变量和方法),既可以在该类中访问它,也可以在其扩展类中访问它,还可以在该类的外部(例如main函数)访问它,一般使用率较高的成员会采用这种方式。属于protected类型的成员,既可以在该类中访问它,也可以在其扩展类中访问它,多见于基类与扩展类背景下。属于private类型的成员,则只能在该类中访问它,一般该类所独有的成员变量都会采用private类型,避免外部类访问,起到保护作用。
继承是面向对象编程的重要特征,继承的机制使得一个新类可以获得现有类的属性和方法,这就使得在软件的实际开发过程中代码的复用率得到提高,软件开发人员可以根据需求对现有类进行修改,最大限度地重复现有的软件。
当类的继承方式为公有(public)继承时,基类的public和protected成员分别成为派生类的public和protected成员,派生类的其他成员可以直接访问它们,但是派生类外部只能通过派生类的对象访问继承来的public对象。基类的private成员在派生类内部和外部都是不可访问的。公有继承在实际应用中是最常见的一种继承方式。
当类的继承方式为私有(private)继承时,基类的public和protected成员都成为派生类的private成员,派生类的其他成员可以直接访问它们,但是派生类外部无法通过派生类的对象访问继承来的对象。基类的private成员在派生类内部和外部都是不可访问的。
当类的继承方式为保护(protected)继承时,基类的public和protected成员都成为派生类的protected成员,派生类的其他成员可以直接访问它们,但是派生类外部无法通过派生类的对象访问继承来的对象。基类的private成员在派生类内部和外部都是不可访问的。
以上是单重继承,单重继承机制可以描述现实世界中大多数客观事物的关系,即只从一个基类中派生新类,但是现实世界中也存在从多个基类中派生新类的情况,称为多重继承。
作为一门出色的面向对象编程语言,C++是博大精深的,其封装、继承和多态的重要特点贯穿始终,接下来谈一谈我对继承的理解。既然是继承,肯定至少存在两个,即被继承者和继承者,也就是C++中的基类(父类)和扩展类(子类)。那么基类和扩展类是如何发生联系的呢?
首先,需要了解一下访问权限,类中的每一个成员变量和成员方法都是有访问权限的,分为public、protected和private三种类型。属于public类型的成员(包括变量和方法),既可以在该类中访问它,也可以在其扩展类中访问它,还可以在该类的外部(例如main函数)访问它,一般使用率较高的成员会采用这种方式。属于protected类型的成员,既可以在该类中访问它,也可以在其扩展类中访问它,多见于基类与扩展类背景下。属于private类型的成员,则只能在该类中访问它,一般该类所独有的成员变量都会采用private类型,避免外部类访问,起到保护作用。
继承是面向对象编程的重要特征,继承的机制使得一个新类可以获得现有类的属性和方法,这就使得在软件的实际开发过程中代码的复用率得到提高,软件开发人员可以根据需求对现有类进行修改,最大限度地重复现有的软件。
当类的继承方式为公有(public)继承时,基类的public和protected成员分别成为派生类的public和protected成员,派生类的其他成员可以直接访问它们,但是派生类外部只能通过派生类的对象访问继承来的public对象。基类的private成员在派生类内部和外部都是不可访问的。公有继承在实际应用中是最常见的一种继承方式。
当类的继承方式为私有(private)继承时,基类的public和protected成员都成为派生类的private成员,派生类的其他成员可以直接访问它们,但是派生类外部无法通过派生类的对象访问继承来的对象。基类的private成员在派生类内部和外部都是不可访问的。
当类的继承方式为保护(protected)继承时,基类的public和protected成员都成为派生类的protected成员,派生类的其他成员可以直接访问它们,但是派生类外部无法通过派生类的对象访问继承来的对象。基类的private成员在派生类内部和外部都是不可访问的。
以上是单重继承,单重继承机制可以描述现实世界中大多数客观事物的关系,即只从一个基类中派生新类,但是现实世界中也存在从多个基类中派生新类的情况,称为多重继承。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- PostgreSQL教程(三):表的继承和分区表详解
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- 浅谈Lua的面向对象特性
- Lua中调用C++函数示例
- Lua面向对象之类和继承浅析
- Lua教程(一):在C++中嵌入Lua脚本
- 浅析Ruby中继承和消息的相关知识
- Lua教程(二):C++和Lua相互传递数据示例
- JavaScript面向对象的两种书写方法以及差别
- 浅谈c# 面向对象之类与对象
- C#面向对象特征的具体实现及作用详解
- C# 面向对象的基本原则
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- 浅谈对c# 面向对象的理解