VB.net总结(二)——面向对象
我们知道面向对象的程序设计有三大特点:封装和隐藏、继承性、多态性。那么这些在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 ii. 成员:数据、属性、事件和方法 iii. 作用域:Public(公有)、Private(私有)、Protected(保护)。 iv. 数据成员可以初始化,同普通变量的初始化。 u 对象及其成员的访问i.对象变量声明: [Dim | Private |Public] 对象变量名 As [New] 类名 其中:类为预定义的类(如Form等)或用户自己定义的类;New关键字创建类的一个实例 ii.对象变量赋值与普通变量的赋值一样。 iii.成员访问: 对象成员需要通过对象变量才能访问: 数据成员 对象变量.数据成员名 属性 对象变量.属性 方法 对象变量.方法(参数表) i. 对象变量的释放:对象变量名 =Nothing。 u 构造函数构造函数:用于类成员初始化的专用函数。 2 特点构造函数的特点: 构造函数名只能是New,并且不能指定函数类型(即为Sub)。 可以重载 即可以定义多个参数个数不同或参数类型不同的构造函数。 构造函数在创建对象时由系统自动调用,程序中不能直接调用。 2 形式1.构造函数形式 Public Sub New(……) …… End Sub 2.缺省构造函数(空构造函数) 若类中没有定义过任何形式的构造函数,系统会自动生成如下的缺省构造函数: Public Sub New ( ) End Sub 在执行如Dim s As New Student这样的语句时由系统自动调用。 2 属性定义访问修饰符 指Public、Private、Protected、Friend或Protected Friend等选项。 Get … End Get定义获取属性值的操作。 若没有Get … End Get部分,则所定义的属性是只写属性。 Set … End Set 定义设置属性值的操作。 若没有Set … End Set部分,则所定义的属性是只读属性。 u 继承和派生在已有类的基础上构造新的类,新类继承了原有类的数据成员、属性、方法和事件。原有的类称为基类,新类称为派生类。
我们可以看出派生类继承了基类。 2 如何定义呢?派生类使用Inherits语句继承基类的成员。派生类的定义形式如下: Class 派生类名 Inherits 基类 …… End Class 前面已经讲解了构造函数,那么派生类的构造函数呢? 派生类能继承基类的数据成员、属性、方法和事件,但不能继承基类的构造函数。若需要对派生类对象初始化,则需要定义新的构造函数。形式如下: Public Sub New(派生类构造函数总参数表) MyBase.new(基类构造函数参数表) 派生类数据成员初始化 End Sub 2 重载和重写在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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |