mybase和mysql_MyBase和MyClass分别是什么意思?

MyBase   关键字的行为类似于引用类的当前实例的基类的对象变量。MyBase   常用于访问在派生类中被重写或隐藏的基类成员。具体而言,MyBase.New   用于从派生类构造函数中显式调用基类构造函数。

MyClass   的行为类似于引用最初实现时类的当前实例的对象变量。MyClass   与   Me   类似,但对它的所有方法的调用都按该方法为   NotOverridable   来处理。因此,所调用的方法不受派生类中的重写影响。下面的示例对   Me   和   MyClass   进行了对比。

Class   BaseClass

Public   Overridable   Sub   MyMethod()

MsgBox("Base   class   string")

End   Sub

Public   Sub   UseMe()

Me.MyMethod()       '   Use   calling   class's   version,   even   if   an   override.

End   Sub

Public   Sub   UseMyClass()

MyClass.MyMethod()       '   Use   this   version   and   not   any   override.

End   Sub

End   Class

Class   DerivedClass   :   Inherits   BaseClass

Public   Overrides   Sub   MyMethod()

MsgBox("Derived   class   string")

End   Sub

End   Class

Class   TestClasses

Sub   StartHere()

Dim   TestObj   As   DerivedClass   =   New   DerivedClass()

TestObj.UseMe()       '   Displays   "Derived   class   string".

TestObj.UseMyClass()       '   Displays   "Base   class   string".

End   Sub

End   Class

尽管   DerivedClass   重写了   MyMethod,但   UseMyClass   中的   MyClass   关键字使重写的影响无效,编译器会将该调用解析为   MyMethod   的基类版本。

MyClass   不能在   Shared   方法内部使用,但您可以在实例方法内部使用它来访问类的共享成员。

**********************************************************************************************************************************

在继承当中,MyBase表示基类,Me表示自己,Class用来直接定义类

Overridable   关键字指定属性或方法可以在派生类中重写。

继承的基础知识:(详细的请参照MSDN)

Inherits   语句用于基于现有类(称为“基类”)来声明新类(称为“派生类”)。派生类继承并可扩展基类中定义的属性、方法、事件、字段和常数。下面一节描述一些继承规则,以及一些可用来更改类继承或被继承方式的修饰符:

默认情况下,所有类都是可继承的,除非用   NotInheritable   关键字标记。类可以从项目中的其他类继承,也可以从项目引用的其他程序集中的类继承。

与允许多重继承的语言不同,Visual   Basic   .NET   只允许类中有单一继承,即派生类只能有一个基类。虽然类中不允许有多重继承,但类“可以”实现多个接口,这样可以有效地实现同一目的。

若要防止公开基类中的受限项,派生类的访问类型必须与其基类一样或比其基类所受限制更多。例如,Public   类无法继承   Friend   或   Private   类,而   Friend   类无法继承   Private   类。

继承修饰符

Visual   Basic   .NET   引入了下列类级别语句和修饰符以支持继承:

Inherits   语句   —   指定基类。

NotInheritable   修饰符   —   防止程序员将该类用作基类。

MustInherit   修饰符   —   指定该类仅适于用作基类。无法直接创建   MustInherit   类的实例,只能将它们创建为派生类的基类实例。(其他编程语言,如   C++   和   C#,使用术语“抽象类”来描述这样的类。)

重写派生类中的属性和方法

默认情况下,派生类从其基类继承方法。如果继承的属性或方法需要在派生类中有不同的行为,则可以“重写”它,即,可以在派生类中定义该方法的新实现。下列修饰符用于控制如何重写属性和方法:

Overridable   —   允许某个类中的属性或方法在派生类中被重写。

Overrides   —   重写基类中定义的   Overridable   属性或方法。

NotOverridable   —   防止某个属性或方法在继承类中被重写。默认情况下,Public   方法为   NotOverridable。

MustOverride   —   要求派生类重写属性或方法。当使用   MustOverride   关键字时,方法定义仅由   Sub、Function   或   Property   语句组成。不允许有其他语句,尤其是不能有   End   Sub   或   End   Function   语句。必须在   MustInherit   类中声明   MustOverride   方法。

有关重写方法的更多信息,请参见重写属性和方法

MyBase   关键字

当重写派生类中的方法时,可以使用   MyBase   关键字调用基类中的方法。例如,假设您正在设计一个重写从基类继承的方法的派生类。重写的方法可以调用基类中的该方法,并修改返回值,如下面的代码片段中所示:

Class   DerivedClass

Inherits   BaseClass

Public   Overrides   Function   CalculateShipping(ByVal   Dist   As   Double,   _

ByVal   Rate   As   Double)   As   Double

'   Call   the   method   in   the   base   class   and   modify   the   return   value.

Return   MyBase.CalculateShipping(Dist,   Rate)   *   2

End   Function

End   Class

下面的列表描述对使用   MyBase   的限制:

MyBase   引用直接基类及其继承成员。它无法用于访问类中的   Private   成员。

MyBase   是关键字,不是实际对象。MyBase   无法分配给变量,无法传递给过程,也无法用在   Is   比较中。

MyBase   限定的方法不需要在直接基类中定义,它可以在间接继承的基类中定义。为了正确编译   MyBase   限定的引用,一些基类必须包含与调用中出现的参数名称和类型匹配的方法。

不能使用   MyBase   来调用   MustOverride   基类方法。

MyBase   无法用于限定自身。因此,下面的代码是非法的:

MyBase.MyBase.BtnOK_Click()       '   Syntax   error.

MyBase   无法用在模块中。

如果基类在不同的程序集中,则不能使用   MyBase   来访问标记为   Friend   的基类成员。

MyClass   关键字

MyClass   关键字使您得以调用在类中实现的   Overridable   方法,并确保调用此类中该方法的实现,而不是调用派生类中重写的方法。

MyClass   是关键字,不是实际对象。MyClass   无法分配给变量,也无法传递给过程,而且也无法用在   Is   比较中。

MyClass   引用包含类及其继承成员。

MyClass   可用作   Shared   成员的修饰符。

MyClass   无法用在标准模块中。

MyClass   可用于限定这样的方法,该方法在基类中定义但没有在该类中提供该方法的实现。这种引用的意义与   MyBase.Method   相同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值