第9章 面向对象与类

面向对象主要解决3个问题:

1)       软件和代码重用性比较差;

2)       软件和代码的可维护性比较差;

3)       软件不能满足客户的需求;

 

1面向对象和面向过程

面向对象,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。

面向对象中的任何对象都可以归属某类对象,任何对象都是某一类对象的实例。类是面向对象中描述了一组具有相同的特性和行为的对象。

面向对象是高级编程语言的特征,以对象为语言的中心,用消息来进行驱动。面向对象编程语言:程序=对象+消息

 

面向过程是一种基础方法,它考虑的是实际的实现。(面向过程是从上往下步步求精,最重要的是模块化的思想方法。)

面向过程是一种以过程为中心的编程思想,以算法进行驱动。面向过程编程语言的组成为:程序=算法+数据。

 

2、面向对象特征:封装、继承、多态、

封装(目的是增强安全性和简化编程,不用了解具体实现细节,只通过外部接口和特定访问权限来使用类的成员)

继承(继承的过程是从一般到特殊)

多态(允许将父对象设置成为和一个或多个它的子对象相等的技术,赋值后,父对象就可以根据当前赋值给它的子对象的特性以不同方式运作)

 

类就是把一组具有相同的方法和属性的对象归属为一起,面向对象中,所有对象都可以归属为一个类。

 

3、类的本质是对某种类型的对象定义变量和方法的原型。它表示堆共有特征的事物的抽象,类是面向对象编程的基础。类本身不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个实例,即对象,就在内存中创建。一个类可以在内存中创建多个相同类型的对象。

 

类成员3种访问权限:public(类外访问)、private(该类成员函数访问)、protected(该类成员函数或者派生类的成员函数访问)。

类定义的成员:数据成员(指定该类对象的内部表示)、成员函数(指定该类的操作)

 

C语言只有结构概念,在C++中可以在结构体中声明函数,但是在C语言中是不允许的。

实例化的类存储在内存的堆内;而结构存储在栈内,结构的执行效率相对较高。结构没有析构函数。结构不可以继承。一般来说结构用来处理较少的程序基础数据,而类用来处理复杂逻辑。

 

4抽象类为各种派生类提供一个公共的界面。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,对抽象类不能使用new关键字,它也不能封装。如果抽象类的派生类没有实现所有的抽象方法,则该派生类必须声明为抽象类。派生类用覆盖来实现抽象方法。

抽象类一定包含纯虚函数,因此不能定义抽象类的抽象。

 

5、C++中,运行库可以定义类的成员,类的成员包括数据、函数和嵌套模板,它们一起组成了类。

类的成员变量有3种访问权限:public(类中方法和友元函数访问,可以被类对象访问)、private(该类中的方法访问,不可以被类对象访问)、protected(类中方法和友元函数访问,不可以被类对象访问)。

 

C语言默认访问权限是publicC++默认访问权限是private

 

6、声明为static的类成员能在类的范围内共享,这样的类成员就是类的静态成员。静态成员是类的所有对象中共享成员,而不是某个对象的成员。

 

使用静态数据成员可以节省内存,因为它是所有对象所共有的。静态数据成员只会在内存中开辟一块存储空间,供所有对象共用,静态成员在类加载的时候就存于内存中。静态成员在类加载时候就存在于内存中。

 

类的静态成员是可以独立访问的,不需要创建类的实例即可以访问静态成员。类的静态函数只能调用静态成员,因为静态函数不包含this指针。

静态数据成员被类的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。

 

7、多态允许将子类类型的指针复制给父类类型的指针,多态性在C++中是通过虚函数实现的。(一个接口,多种实现)

 

C++中,经常指的多态指的是动态多态,实现基础是继承机制和虚函数,通过抽象类的派生来实现多态。多态还有静态多态、函数多态以及宏多态。

静态多态通过彼此单独定义但支持共同操作的具体类来描述共同性,必须存在必需的同名成员函数。

泛型编程是“组件功能基于框架整体而设计”的模板编程。(STL

函数多态就是重载,基于不同函数的参数列表,相同名称的函数可以指向不同的函数定义。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值