Visual Basic.NET+SQL Server全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实例3-2 类的实例化

该实例实现步骤如下。

1 创建窗体

在本章的项目chapter3下,右键单击该项目名下面的文件夹“类及对象”,在弹出菜单中选择“添加”→“Windows窗体”菜单命令,在弹出的对话框中输入窗体名Cl_insFrm,单击“添加”按钮完成窗体的创建。

2 添加控件

在窗体中添加两个Textbox控件,用于输入和显示用户的信息。

添加一个Label控件用于对相关信息的说明。

3 添加代码

双击该窗体进入窗体的代码编辑器窗口,向其中添加代码3-6中的代码。

代码3-6 Cl_insFrm.vb

        01. Public Class Cl_insFrm
        02.     Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
        03.     ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        04.         Dim num As Integer = Me.TextBox1.Text '获得用户输入的数值
        05.         Dim sum As Int64 = 0
        06.         Dim i As Integer
        07.         Dim m As My_class '实例化类My_class
        08.         m = New My_class
        09.         For i = 1 To num '求1!+…+n!的值
        10.             sum = sum + m.Myfun(i)
        11.         Next
        12.         Me.TextBox2.Text = "1!+…+" + CStr(num) + "!" + "=" + CStr(sum)
        13.     End Sub
        14. End Class
        15. Public Class My_class '定义一个类名称为My_class
        16.     Public Function Myfun(ByVal n As Int64) As Int64 '实现求得一个数的阶乘
        17.         If n <= 1 Then
        18.             Return 1
        19.         Else
        20.             Return Myfun(n -1) * n
        21.         End If
        22.     End Function
        23. End Class

代码3-6执行步骤如下:

① 第15行代码定义一个类,名称为My_class;

② 第16行到第22行代码是在My_class类中定义一个Function函数,实现求一个数的阶乘;

③ 第20行代码运用递归的方法求得一个数的阶乘;

④ 第4行代码定义一个整型变量,用来获得用户输入的数值num;

⑤ 第7行和第8行代码是实例化类My_class,方便之后调用该类中的函数;

⑥ 第9行到第11行代码是用For循环计算从1开始到num值的阶乘,并将它们相加,求得1!+…+n!(其中n为用户输入的数值)值;

⑦ 第12行代码是将所得结果显示在窗体上。

4 运行结果

按F5键,运行该程序,结果如图3-2所示。

图3-2 实例3-2运行结果

3.3.3 类成员

类中的字段、方法、属性、事件等,称为该类的成员。在VB.NET编辑器中,实例化一个类后,访问该类中的成员,只要在代码编辑器窗口中键入该类的实例(即对象)名,再键入一个点(.),系统会自动显示该对象的成员,这一点运用起来很方便。例如,如图3-3所示,在代码中调用employee对象的成员时,只需键入employee,然后输入一个点,编辑器就自动显示了该对象的成员。用户只要选择需要调用的成员即可。

图3-3 调用类成员

在调用类成员时,并不是所有的成员都可以访问,这里还涉及类成员访问权限的问题,在VB.NET中,访问是分等级的。类成员由它的访问修饰符决定它的访问限制。下面根据访问修饰符来讨论访问等级。

Public:Public类成员没有访问限制。在一个类成员前面添加Public关键字就使得它可以被随意访问。例如代码3-4中,Employee类中的PrintSalary方法就是一个Public方法,可以从工程中任何地方对它进行访问。

Private:私有的类成员只能被该类内部的其他成员访问。使用Private关键字就可以使一个类成员成为私有的。

Protected:被保护的类成员只能被该类内部和该类的派生类进行访问。使用Protected关键字就可以使类成员成为被保护的类成员。

Friend:具有Friend级访问限制的类成员只能在定义该类的程序内部使用,使用Friend关键字就能使类成员具有Friend级访问限制。

Protected Friend:这是Protected和Friend两种访问类型的组合。这些不同的访问类型使面向对象编程具有了信息隐藏能力。也就是说,可以使用这些访问类型保护不愿意让别人访问的信息。

接下来简单介绍一下类中的主要成员。

1.字段

一般把类或结构中定义的变量和常量称为字段。

字段分为静态字段、实例字段、常量和只读字段。

用修饰符static声明的字段为静态字段。不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销。必须采用“类名.静态字段名”的方式引用静态字段。如果类中定义的字段不使用修饰符static,那么该字段为实例字段。每创建该类的一个对象,在对象内就创建了一个该字段实例;创建它的对象被撤销时,该字段对象也被撤销。实例字段采用“实例名.实例字段名”的方式引用。用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改。用readonly修饰符声明的字段为只读字段,只读字段是特殊的实例字段,它只能在字段声明或构造函数中重新赋值,在其他任何地方都不能改变只读字段的值。

下面以实例说明字段的使用。