我们知道面向对象的程序设计有三大特点:封装和隐藏、继承性、多态性。那么这些在VB.net又是以什么样的形式展现的呢?
Ø 类的定义
VB.NET中,类通过Class……End Class语句定义。例如:
Public ClassForm1
Inherits System.Windows.Forms.Form
……
End Class
Public表明类是全局的,Inherits表明类Form1继承System.Windows.Forms.Form类
i.定义关键字:class……end class
iii. 作用域:Public(公有)、Private(私有)、Protected(保护)。
iv. 数据成员可以初始化,同普通变量的初始化。
u 对象及其成员的访问
i.对象变量声明:
[Dim | Private |Public] 对象变量名 As [New] 类名
其中:类为预定义的类(如Form等)或用户自己定义的类;New关键字创建类的一个实例
ii.对象变量赋值与普通变量的赋值一样。
iii.成员访问:
对象成员需要通过对象变量才能访问:
数据成员 对象变量.数据成员名
i. 对象变量的释放:对象变量名 =Nothing。
u 构造函数
² 特点
构造函数的特点:
构造函数名只能是New,并且不能指定函数类型(即为Sub)。
可以重载 即可以定义多个参数个数不同或参数类型不同的构造函数。
² 形式
1.构造函数形式
Public Sub New(……)
……
End Sub
若类中没有定义过任何形式的构造函数,系统会自动生成如下的缺省构造函数:
Public Sub New ( )
End Sub
在执行如Dim s As New Student这样的语句时由系统自动调用。
² 属性定义
访问修饰符 指Public、Private、Protected、Friend或Protected Friend等选项。
若没有Get … End Get部分,则所定义的属性是只写属性。
Set … End Set 定义设置属性值的操作。
若没有Set … End Set部分,则所定义的属性是只读属性。
u 继承和派生
在已有类的基础上构造新的类,新类继承了原有类的数据成员、属性、方法和事件。原有的类称为基类,新类称为派生类。
我们可以看出派生类继承了基类。
² 如何定义呢?
派生类使用Inherits语句继承基类的成员。派生类的定义形式如下:
Class 派生类名
Inherits 基类
……
End Class
派生类能继承基类的数据成员、属性、方法和事件,但不能继承基类的构造函数。若需要对派生类对象初始化,则需要定义新的构造函数。形式如下:
Public Sub New(派生类构造函数总参数表)
MyBase.new(基类构造函数参数表)
派生类数据成员初始化
End Sub
² 重载和重写
在C#及设计模式中我们接触过对于抽类中抽象方法的重写及虚方法的重写;同时在C++、C#中也接触过函数的重载和方法的重载,其实在VB.net里也一样,只是表示不一样,但是实质的内容还是一样的。
l 重载
重载就是几个不同的函数共有一个相同的名字。重载通过关键字Overloads实现。
举例:
Overloads PublicShared Function Abs(ByVal value As Integer) As Integer
Overloads PublicShared Function Abs(ByVal value As Long) As Long
可以看出函数名是一样的,只是参数的类型不一样。
l 重写
1.基类的定义
Class 基类名
……
Public Overridable Sub 过程名(参数名)
……
End Sub
……
End Class
2.派生类的定义
Class 派生类名
……
Public Overrides Sub 过程名(参数名)
……
End Sub
……
End Class
l 区别小结
(1)重载要求参数列表有所不同,或者参数个数不同,或者参数类型不同。当参数个数和类型全部相同时,不能重载,只能重写。
(2)同一个类中方法重载时,每一个方法中必须要有Overloads关键字。
(3)派生类重载基类方法时,基类的方法中可以省略Overloads关键字,但派生类的方法必须要有Overloads关键字。
(4)若基类的方法中有Overloads关键字,则基类中可以重载,派生类也可以重载。
(5)重写只能发生在基类与派生类之间。在基类中使用关键字Overridable,在派生类中使用关键字Overrides。