1700415823
1700415825
计算机是怎样跑起来的 7.9 观点7:在面向对象编程中使用继承、封装和多态
1700415826
1700415827
“继承”(Inheritance),“封装”(Encapsulation),“多态”(Polymorphism,也称为多样性和多义性)被称为面向对象编程的三个基本特性。在作为面向对象编程语言的C++,Java,C#等语言中,都已具备了能够用程序实现以上三个特性的语法结构
1700415828
1700415829
继承指的是通过继承已存在的类所拥有的成员而生成新的类。
1700415830
1700415831
封装指的是在类所拥有的成员中,隐藏掉那些没有必要展示给该类调用者的成员。
1700415832
1700415833
多态指的是针对同一种消息,不同的对象可以进行不同的操作
1700415834
1700415835
其实仅仅介绍如何在程序中使用这三个基本特性,就已经需要一本书了。因而有很多人就会被所学到的语法结构和编程技术中涉及的大量知识所束缚,以致不能按自己的想法编写程序。其实只要沉静下来,不拘泥于语法和技术,转而去关注使用这三个特性所带来的好处,就能顺应自己的需求恰当地使用面向对象编程语言了
1700415836
1700415837
只要去继承已存在的类,就能高效地生成新的类。如果一个类被多个类所继承,那么只要修正了这个类,就相当于把继承了这个类的所有类都修正了。只要通过封装把外界不关心的成员隐藏起来,类就可以被当作黑盒,变成了易于使用且便于维护的组件了。而且由于隐藏起来的成员不能被外界访问,所以也就可以放心地随意修改这些成员。只要利用了多态,生成对同一消息可以执行多种操作的一组类,使用这组类的程序员所需要记忆的东西就减少了。总之,无论是哪一点,都是面向对象编程所带来的好处,都可以实现开发效率和可维护性的提升。
1700415838
1700415839
稍后将介绍如何在实际的编程中使用继承。为了对类进行封装,需要在类成员的定义前指定关键词public(表示该成员对外可见)或是private(表示该成员对外不可见)。之前的代码清单7.2中省略了这些关键词。实现多态可以有多种方法,感兴趣的读者可翻阅面向对象语言的教材等相关资料。
1700415840
1700415841
1700415842
1700415843
1700415845
计算机是怎样跑起来的 7.10 类和对象的区别
1700415846
1700415847
前面介绍了有关面向对象的几种观点,应该已了解了面向对象编程。但再补充一些面向对象编程必不可少的知识。
1700415848
1700415849
首先,要说明一下类和对象的区别。在面向对象编程中,类和对象被看作是不同的概念而予以区别对待。类是对象的定义,而对象是类的实例(Instance)。经常有教材这样说明二者之间的关系:类是做饼干的模具,而用这个模具做出来的饼干就是对象。虽然这是个有趣的比喻,但如果这样类比的话,就有可能无法看清二者在实际编程中的关系(如图7.6所示)
1700415850
1700415851
图7.6 类和对象的关系就像饼干模具和饼干的关系
1700415852
1700415853
1700415854
1700415855
1700415856
在之前的代码清单7.2所示的程序中,定义了一个类MyClass。但是还无法直接使用类MyClass的成员,要想使用就必须在内存上生成该类的副本,这个副本就是对象(如代码清单7.5所示)
1700415857
1700415858
代码清单7.5 先创建类的对象然后再使用(C++)
1700415859
1700415860
MyClass obj; //创建对象
1700415861
1700415862
obj.Variable=123; //使用对象所持有的变量
1700415863
1700415864
obj.Function(); //使用对象所持有的函数
1700415865
1700415866
先要创建一个个的对象然后才能使用类中定义的成员,对于面向对象语言的初学者而言,会认为这样做很麻烦。但也只能这样做,因为这是面向对象语言就是这样规定的。可为什么要确立这样的规则呢?原因是即便是在现实世界中,也有类(定义)和对象(实体)的区别。举例来说,假设定义了一个表示企业中雇员的类Employee,如果仅仅是定义完就可以立即使用类Employee中的成员,那么程序中实际上就只能存在一个雇员,而如果规定了要先创建类Employee的对象才能使用,那么就可以需要多少就创建多少雇员了(通过在内存上创建出类Employee的副本)。在这一点上,稍后将要介绍的具有两个文本框的Windows应用程序也是如此,也就是说这个程序创建了两个文本框类的对象
1700415867
1700415868
这样的话,就更能理解“类是做饼干的模具,用模具做出来的饼干是对象”这句话的含义了吧。有了一个做饼干的模具(类),那么需要多少就能做出多少饼干(对象)
1700415869
1700415870
1700415871
1700415872
[
上一页 ]
[ :1.700415823e+09 ]
[
下一页 ]