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  构造函数

     构造函数:用于类成员初始化的专用函数。

      ²  特点

       构造函数的特点:

       构造函数名只能是New,并且不能指定函数类型(即为Sub)。

       可以重载   即可以定义多个参数个数不同或参数类型不同的构造函数。

       构造函数在创建对象时由系统自动调用,程序中不能直接调用。

      ²  形式

      1.构造函数形式

         Public Sub New(……)

            ……

         End Sub

     2.缺省构造函数(空构造函数)

        若类中没有定义过任何形式的构造函数,系统会自动生成如下的缺省构造函数:

        Public Sub New ( )

        End Sub

     在执行如Dim s As New Student这样的语句时由系统自动调用。

      ²  属性定义

      访问修饰符  指Public、Private、Protected、Friend或Protected Friend等选项。

       Get … End Get 定义获取属性值的操作。

       若没有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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值