VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 关于VB.NET基类继承、重载、隐藏的总结归纳

文章主要介绍了VB.NET基类的继承,重写,重载,隐藏,VB.NET类成员访问的修饰符Friend,private ,protected,protected friend,public 。
  •  

    很喜欢用VB.NET开发语言,在网上也经常收集,自己也总结了一点小笔记,在这里共大家参考一下,本文主要对VB.NET基类的继承,重写,重载,隐藏的概念和方法进行总结,来看看吧。

    通过声明Inherits关键字,来标识该类的基类是谁。Inherits 基类名

    1. Sub New(s as string)'构造,加入变量s 可要求强行赋值  
    2. '初始化  
    3. MyBase.New() '注意:这句话要放在sub内的第一句,基类带参数时要标明  
    4. End Sub  
    5. Protected Overrides Sub Finalize()'析构  
    6. '收尾  
    7. MyBase.Finalize()  
    8. End Sub 

    在基类中用Overridable修饰符来标识允许基类中的属性或方法在其派生类中被重写,没有标识的其实就是默认为有NotOverridable修饰符来隐式地标识,用于提醒编译器该属性或方法不可被重写。

    ◆重写: 在派生类中用Overrides重新编写有Overridable标识的基类的方法或属性。
    ◆重载: Overloads,用同样的名称,用不同的参数列表来创建多个方法和属性,在调用时就可以适应不同参数类型的要求。
    ◆隐藏: 用派生类的名称代替基类的名称,并非让该名称消失。Shadows方式,适用于任何元素类型,亦可声明成任何元素类型。隐藏时在派生类中用private来修饰,它的子类就会继承它基类的成员。

    在编辑器中隐藏基类成员的提示

  • <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> Public Shadows 基类名称1,基类名称2,.....  

用来控制VB.NET基类成员访问的修饰符
Friend : 只在当前项目中可用
private : 只在本类中可用
protected : 在本类和本类的派生类中可用的成员
protected friend:在当前项目和本类的派生类中可用
public :类以外的代码也可以访问
默认值为:public

每当创建类的实例时,如果该对象中存在名为 New 的过程,则公共语言运行库 (CLR) 尝试执行它。New 是一种称为“构造函数”的过程,该构造函数用于在对象中的任何其他代码执行之前初始化新对象。New 构造函数可用于打开文件、连接到数据库、初始化变量以及处理任何需要在可使用对象前完成的其他任务。

当创建派生类的实例时,基类的 Sub New 构造函数首先执行,然后执行派生类中的构造函数。这是因为 Sub New 构造函数中的第一行代码使用语法 MyBase.New() 调用类层次结构中该类本身紧上面的类的构造函数。然后调用该类层次结构中每个类的 Sub New 构造函数,直到到达基类的构造函数。此时,基类构造函数中的代码执行,接着执行所有派生类中每个构造函数的代码,最后执行最相近派生的类中的代码。当不再需要某对象时,CLR 调用该对象的 Finalize 方法,然后释放其内存。Finalize 方法称为“析构函数”,因为它执行清理任务,如保存状态信息、关闭文件和与数据库的连接,以及执行在释放对象前必须完成的其他任务。

当调用派生类的 Sub Finalize 方法时,首先执行所需的任何清理任务,然后使用语法 MyBase.Finalize() 显式调用其基类的 Sub Finalize 方法。因此,Sub Finalize 方法首先从最相近派生的类开始运行,最后执行VB.NET基类中的代码。


VB.NET引入了一些语句和修饰符支持继承,下表描述了VB.NET基类的继承的语句和说明:
语句/修饰符 描述

Inherits: Inherits 语句--指明了当前的类从哪个类继承。Inherits 要害词只用在类和接口中
NotInheritable: NotInheritable 修饰符--禁止用作基类
MustInherit: MustInherit修饰符--指明不能建立当前类的实例。这个类只能被继承
Overridable: Overridable 修饰符--答应类的一个属性或方法可以被Override。Public 方法缺省是 NotOverridable
Overrides: Overrides 修饰符--Override基类的一个属性或方法
NotOverridable: NotOverridable 修饰符 (缺省)- -禁止类的一个属性或方法被Override
MustOverride: MustOverride 修饰符--需要继承的类Override的属性或方法。当使用MustOverride 要害词的时候,方法的定义只包括Sub, Function和 Property 语句。要非凡强调的是,其他任何语句是不答应没有End Sub, End Function或者 End Property 语句。类中带有MustOverride 方法都必须声明为MustInherit。Public 方法缺省值是NotOverridable
Shadows: Shadows 修饰符--答应重新使用被继承的类成员的名字。Shadow不删除继承得来的类的类型成员,它仅仅是使所有被继承的类型成员在派生类中不可使用。Shadow是在派生类中重新声明类成员

  1. Class A  
  2. Public Sub F()  
  3. Debug.Print("基类不能重写")  
  4. End Sub  
  5. Public Overridable Sub G()  
  6. Debug.Print("基类可重写")  
  7. End Sub  
  8. Public Sub H()  
  9. Debug.Print("A.H")  
  10. End Sub  
  11. End Class  
  12. Class B  
  13. Inherits '继承A  
  14. Public Shadows As String "隐藏基类,重新生成一个" 
  15. Public Overrides Sub G()  
  16. Debug.Print("重写")  
  17. End Sub  
  18. Public Overloads Sub G(ByVal As Int32)  
  19. Debug.Print("重载")  
  20. End Sub  
  21. '隐藏基类H成员,编辑器中看不到提示,但依然可以用  
  22. <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)> Public Shadows As Int16 "3" 
  23. End Class  
  24. Public Class Form1  
  25. Private Sub Form1_Load(ByVal sender As System.Object, ByVal As System.EventArgs) Handles MyBase.Load  
  26. Dim As New B()  
  27. Dim As New A  
  28. a.F()  
  29. a.G()  
  30. a.H()  
  31. Debug.Print(b.F)  
  32. b.G()  
  33. b.G(3)  
  34. Debug.Print(b.h)  
  35. End Sub  
  36. End Class 

输出结果:
基类不能重写
基类可重写
A.H
隐藏基类,重新生成一个
重写
重载
3


相关教程