打字猴:1.700415844e+09
1700415844 计算机是怎样跑起来的 [:1700412690]
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
1700415873 计算机是怎样跑起来的 [:1700412691]
1700415874 计算机是怎样跑起来的 7.11 类有三种使用方法
1700415875
1700415876 前面介绍过了,在面向对象编程中程序员可以分式,有的人负责创建类,有的负责使用类。创建类的程序员需要考虑的类的复用性、可维护性、如何对现实世界建模以及易用性等,而且还要把相关的函数的变量汇集到类中。这样的工作称为“定义类”
1700415877
1700415878 而使用类的程序员可通过三种方法使用类,关于这一点要有所了解。这三种方法分别是:(1)仅调用类所持有的的个别成员(函数和变量);(2)在类的定义中包含其他的类(这种方法被称为组合);(3)通过继承已存在的类定义出新的类。使用哪种方法是由目标类的性质以及程序员的目的决定的
1700415879
1700415880 在平时所见的程序背后,程序员们也是按照上述三种方法使用类的。代码清单7.6中列出了一段用C#编写的Windows应用程序。当用户点击按钮时,就会弹出一个消息框,里面显示的是输入到两个文本框中的数字进行加法运算后的结果(如图7.7所示)
1700415881
1700415882 代码清单7.6 进行加法运算的Windows应用程序(用C#编写)
1700415883
1700415884
1700415885
1700415886
1700415887 图7.7 Windows应用程序的运行结果
1700415888
1700415889
1700415890
1700415891
1700415892 这里不需要深究程序代码的含义,而是要把注意力集中到类的三种使用方法上。在这个程序中,表示整体界面的是以Form1为类名的类。类Form1继承了类库中的System.Windows.Forms.Form。在C#中用冒号表示继承,在窗体上,有两个文本框和一个按钮,用程序来表示的话,就是类Form1的成员变量分别是以类System.Windows.Forms.TextBox(文本框类)为数据类型的textBox1,textBox2和以类System.Windows.Forms.Button(按钮类)为数据类型的button1。像这样类中就包含了其他的类,也可以说是类中引用了其他的类。而代码中的Int32.Parse和MessageBox.Show,只不过是个别调用了类中的函数
1700415893
[ 上一页 ]  [ :1.700415844e+09 ]  [ 下一页 ]