C 中的面向对象编程简介
创始人
2024-06-21 09:21:41
0

最近一段时间参加了一家培训机构组织的培训,主要的内容大多都是面向对象编程的技术课程,在这里按照面向对象里面的几个基本概念分别进行说明如下,希望大家学习参考。

一.对象(Object),这个概念可以说是面向对象里面的最为核心的概念,如果找不着对象,又如何面向对象呢?对象,也就是你要处理的问题里面设计的若干个因素,比如你做学生成绩统计,那么学生当然是你要考虑的对象。

二.类(Class),从本质上讲是先有对象才有类,因为在处理的实际编程问题时,你面对的是一个个具体的对象,太多了,怎么办?分门别类,实现物以类聚,对了,将相同属性的对象作为一类进行考虑,张三也好,李四也好,他们都是人的一个实例。在具体的语言实现时,两者的顺序就需要颠倒一下了,也就是要先有类,然后才能实例化生成对象。

 三.面向对象的三大特性:

1.封装

所谓的封装也就是在类的设计时,实现对于类内的数据与方法的不同权限设置,有些数据和方法,我们不希望用户在类的外部通过实例化去调用,那么我们将它们声明成私有的(private),这样这些数据和方法只能被类内部的成员函数访问,而如果希望能够被实例访问,那么声明成公有的(public),至于第三种访问区分符(protected)保护型的,在类的继承时应用,我们到继承那里说明。

 与封装有关的一个概念是“抽象”(abstract) ,即将设计的类的最主要的功能表示出来,这些功能正是要被其他类和函数访问的。

2.继承

 与继承有关的概念是关系,关系描述了类之间的联系,有四种基本类型,即“继承、组合、利用、实例化”。继承就是说某一个类具有了另外一个类所有的数据和方法,当然可以修改一部分并且增加新的数据和方法。继承分为两种类型,即单重继承和多重继承。

 单重继承,即类Derived继承了类Base,定义如下:

  1. class Base  
  2.  
  3.       {  
  4.  
  5.       };  
  6.  
  7.      class Derived:public Base  
  8.  
  9.        {  
  10.  
  11.       } 

可见在定义继承类时,要指明继承了哪一个类,并且指明继承级别(public,protected,private),通过这三种访问区分符的修饰,可以改变基类数据在派生类中的访问权限,public 继承不会改变,protected继承的话原来的public 数据和方法变成派生类的protected型数据和方法,其他不变,private继承则将所有的数据和方法的访问权限设置为private,即这些数据和方法都不能在类的外部访问。

派生类的构造和析构顺序,首先构造基类,然后构造派生类,中间是类的作用,析构顺序正好相反。

多重继承是说一个类继承了两个或者多个类的数据或者方法。在多重继承这里预见的主要的问题是两个歧义性:首先,当继承的两个基类中含有相同的数据或者方法时,在派生类中调用无法区分。

解决方法:指明调用的哪一个类的成员变量和方法,使用作用域分解运算符;在派生类里面重新定义该数据或者方法。第二类歧义性发生在多层继承时,B,C继承了A,而D又继承了B,C,正如矩形和菱形继承四边形而正方形继承了矩形和菱形,两条继承路径使得基类被两次继承,直接访问无法区分,解决方法:支出继承路径,使用虚基类(virtual)方法,在定义继承关系时添加virtual使得基类永远只有一份拷贝。

3.多态

多态性分为两种,即静态多态性和动态多态性。所谓多态,也就是明明同样一个东西,在不同情况下有着不同的表现。

 静态多态性,即预先定义好的,通过函数重载(funcition overload)实现,函数包含了返回值、函数名称、函数参数三个,名字多表示功能,返回值的区分不能区分函数(想象数据类的强制转换吧)。因此重载也就是函数名称相同而参数不同,不同可以表现在参数个数不同、参数类型不同、参数顺序不同

【编辑推荐】

  1. 简介学习C++总结之谈
  2. 对C++库函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...