访问类型
在很多例子中,当你写出一个类后,你要将类提供给其他人访问并且使用它的功能,他们可调用这个类的方法或者访问类的域。面向对象编程的一大好处是可以对类成员的访问进行限制。这就意味作,你能够完全控制想显示的内容。
你可以让其他程序员访问类中的方法,也可以不让其他程序访问,除非是来自类的内部。
在vb.NET中有几个级别的访问控制,详细请看下表:
| Public | Public类成员没有访问限制。构造public类成员是在类成员名前面使用关键字public,所有人均可访问public成员。例如,Employee类中的PrintSalary方法是一个公有方法,能够被任何人和函数调用。 |
| Private | Private类成员只能被类内部访问,使用Private关键字声明私有化类成员。 |
| Protected | 保护成员能被类内部成员和他的继承类访问,使用关键字Protected定义保护成员。 |
| Friend | 友员访问限制在声明该类的程序中,使用关键字Friend声明一个友员。 |
| Protected friend | protected和friend的结合。 |
在面向对象编程中不同的访问限制提供了不同的信息隐藏方式,从另外一个方面来说,你可以保护你不想显示的类成员变量。
静态成员
我们再看一次list4,list5,list6中的Employee类,你可能会感到惊奇为什么我们在使用System.Console的write方法前没有实例化这个类?这是因为在面向对象语言中有一种特殊的成员类型--静态成员,在vb.NET中术语share与c++中的static有相同作用。
静态意味作成员可以使用而用不作实例化,例如,在list7中SalaryLevel类提供了静态域。
| Listing 7: Class SalaryLevel Public Shared Level1 As Decimal = 35000 Public Shared Level2 As Decimal = 40000 Public Shared Level3 As Decimal = 45000 Public Shared Level4 As Decimal = 50000 Public Shared Level5 As Decimal = 55000 Public Shared Level6 As Decimal = 60000 Public Shared Level7 As Decimal = 65000 Public Shared Level8 As Decimal = 70000 Public Shared Level9 As Decimal = 75000 Public Shared Level10 As Decimal = 80000 End Class |
那么我们可以在程序中使用这个类,如list8
| Listing 8: 使用类的静态成员 Imports System Class SalaryLevel Public Shared Level1 As Decimal = 35000 Public Shared Level2 As Decimal = 40000 Public Shared Level3 As Decimal = 45000 Public Shared Level4 As Decimal = 50000 Public Shared Level5 As Decimal = 55000 Public Shared Level6 As Decimal = 60000 Public Shared Level7 As Decimal = 65000 Public Shared Level8 As Decimal = 70000 Public Shared Level9 As Decimal = 75000 Public Shared Level10 As Decimal = 80000 End Class Class Employee Dim yearlyBonus As Decimal = 4000 Public Sub PrintSalary() ’ print the salary to the Console, use ’ the static field of SalaryLevel Console.Write(SalaryLevel.Level4) End Sub Public Shared Sub Main() Dim employee As Employee employee = New Employee() employee.PrintSalary() End Sub End Class |
在Employee类的PrintSalary方法中,我们没有创建SalaryLevel类的对象就使用了SalaryLevel的静态域Level4 。类中非静态成员称为实例成员。
上一页 [1] [2] [3] [4] [5] [6] 下一页