1,封装
(1) 过程封装
实现了操作的封装,而操作所需要的数据是公开的,作为子程序的参数传递给子程序,所以,缺乏对数据的保护。
(2) 数据封装
面向对象中,是通过对象实现了数据及其操作的封装,用户看不到数据,所以,加强了对数据的保护。
2,继承
(1)分类:
1)单继承
一个类只有一个直接基类;
2)多继承
一个类可以有多个直接基类;
(2)继承的方式
public,protected,private
(3)涉及到的概念
1)虚函数(涉及到:覆盖,即(多态性,绑定))
注意:
区分覆盖和重载:
a)重载:是指允许存在多个同名函数,而这些函数的参数表不同(参数个数,参数类型不同)
是在编译期间就绑定了,是静态的;
所以重载与多态无关。
重载只是一种语言特性,与多态无关,与面向对象也无关。
b)覆盖:虚函数总是在派生类中被重写(重写的函数必须有一致的参数表和返回值)
当子类重新定义了父类的虚函数后,父类的指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数;
这样的函数调用在编译期间是无法确定的,函数的地址是在运行期绑定的。
2)纯虚函数,抽象类
3,多态
(1) 定义:多态性可以简单的概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数;
(2)多态的体现形式:
1) 一名多用:
主要指重载,(函数名重载,操作符重载)
2) 类属性
主要指:
类属函数:是指一个函数能对多种类型的参数进行操作(在C++语言中,通过指针和函数模板来实现)
类属类型:是指一个类型可以描述多种类型的数据。(在C++语言中,可以用联合类型和类模板来实现)
(3)面向对象程序中存在的多态关系:
1) 消息的多态:(一个消息,父类和子类有不同的解释)
2) 对象类型的多态:(子类对象,即属于子类也属于父类)
3) 对象标识的多态:(父类的引用或指针可以引用或指向子类的对象)
(4)多态性带来的好处:
1) 易于实现高层(上层)代码的复用
2) 使程序的扩充变得容易(只要增加底层的具体实现)
3) 还能增强语言的可扩充性(重载操作符,对用户自定义的类型的数据进行操作)
4, 绑定:
是一个与多态性相关的概念
(1)定义:是指确定对多态元素使用的过程,即确定对多态元素的某个使用是多态元素的哪一种形式。
(2)分类:
1) 静态绑定
是在编译时刻确定对多态元素的使用;
大多数形式的多态采用静态绑定。
2) 动态绑定
是在运行时刻确定对对态元素的使用。
有些多态如:消息多态和对象标识的多态采用动态绑定。
总结:
1,封装可以隐藏实现细节,是的代码模块化;
2,继承可以扩展已存在的代码模块(类);
3,多态是为了实现另一个目的---接口重用。
它们都是为了代码重用;
但是现实往往是,要有效的实现代码重用很难,而真正最有价值的重用是接口重用;
聚合现在会很好的取代继承的扩展功能,所以现在继承的存在很大程度上是作为“多态”的基础。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。