面向对象程序设计基础复习

1.面向对象程序设计的特点

1.模块化

抽象,面向对技术设计出来的程序都是由一个个对象组成的,每个对象中既定义了相应的数据结构,又定义了操作这些数据结构的方法。

2.数据隐藏

封装,通过定义类把数据和方法集成在一个对象中,外部程序只能通过类所规定的接口和类进行通信。

3.继承

允许从已经存在的类中继承相应的成员,只要告诉编译器新类是由另一个类继承而来的,它就会把另一个类中除私有成员之外的所有成员都赋给新类。继承操作可以减轻工作量,提高可靠性。

4.多态性

指一个名字可以具有多种不同的语义,或者说多个函数具有相同的名字但具有不同的作用。

5.重载

多个函数可以共用一个名字,只要参数个数不同,或者参数类型不同即可。

关键字

1.const用来定义数值不能改变的变量。

变量的存储类型

auto

static

register

extern

函数的重载

函数同名 ,参数个数或者类型不同即可重载。

但是不能根据返回值不同进行重载,因为没有调用函数之前,C++无法判断要调用哪一个函数。

1.类的定义

类的定义相当于定义一种数据类型,而对象则是类的实例。

2.public,private,protected

public表明数据成员和成员函数都是公有的,所有的函数都可以访问这些成员。

private私有的,只有该类的成员函数和友元才可以访问。

protected受保护的,具有private特征的同时,可以由子类成员访问。 

静态数据成员和静态成员函数

对于某些类来讲,一些特定的数据成员的值都是固定不变的,或者说对该类的所有对象都一样的,他们并不是与某一个对象相关,而是与该类的所有对象有关。这种数据就可以被定义为静态的。另外,类中的成员函数也可以被定义为静态,此时该成员函数不再具有this指针,也就是说静态成员函数不与某个具体对象相联系,它是属于类的。

对于静态数据成员和静态成员函数来讲,不管该类生成了多少个对象,也只有一个静态数据成员和静态成员函数。并不是每生成一个对象就生成一个备份,而是所有对象共用一个。

静态数据成员主要用于设定对所有对象都共享的数据,主要目的是提高内存的利用效率。

静态成员函数不能对一般的数据成员进行操作,通常只能用于对静态数据成员进行处理。

友元

之前学习JAVA时没有接触过友元,特此记录加以区分学习记忆。

使用友元或者友元类,就使得与类无关系的一般函数或者其他类也能够对类中的private数据成员进行访问。

目前个人感觉友元破坏了封装特性,才疏学浅,以后想明白了再来修改。

继承

通过使用已有的类并在此基础上追加新的功能就可以派生出新的类,这一处理过程成为继承,被继承的类称为基类(父类),通过继承而产生的新类叫派生类(子类)。

抽象函数和虚函数

虚函数是有代码的并明确允许子类去覆盖,但子类也可不覆盖,就是说可以直接用,不用重写。

抽象函数是没有代码,子类继承后一定要重写。

简单来说虚函数(Virtual)已经包含了也必须包含默认的实现,所以在派生类中可以重新实现也可以不实现这些虚函数。

抽象函数(abstract)没有提供默认实现,所以在派生类中必须实现这些抽象函数。

接口中的函数类似于抽象函数,也不提供默认实现,实现接口的类也必须实现这些函数。

多态

把一个子类实例赋值给一个父类引用,此时调用父类中的虚方法,且子类重写过,则运行时调用的是实际类型的方法,即子类中override的方法。

java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容