关于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来修饰,它的子类就会继承它基类的成员。

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

  1. <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 '继承A  
  14. Public Shadows F As String = "隐藏基类,重新生成一个" 
  15. Public Overrides Sub G()  
  16. Debug.Print("重写")  
  17. End Sub  
  18. Public Overloads Sub G(ByVal s As Int32)  
  19. Debug.Print("重载")  
  20. End Sub  
  21. '隐藏基类H成员,编辑器中看不到提示,但依然可以用  
  22. <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)> Public Shadows h As Int16 = "3" 
  23. End Class  
  24. Public Class Form1  
  25. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  
  26. Dim b As New B()  
  27. Dim a 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

【编辑推荐】

  1. 讲述VB.NET实现拖动图片
  2. 剖析VB.NET TextBox控件
  3. 简单讲解VB.NET ListBox控件
  4. 浅析VB.NET语言与VB语言对比
  5. 你是否了解VB.NET集成开发环境
责任编辑:田树 来源: 博客
相关推荐

2009-11-10 13:08:13

VB.NET编程技巧

2009-11-02 13:14:18

VB.NET函数

2009-10-26 16:53:00

VB.NET常用代码

2009-11-10 11:25:35

VB.NET与Basi

2009-10-21 09:19:40

VB.NET文件压缩 

2009-11-04 13:12:33

VB.NET继承类

2009-11-10 15:30:46

VB.NET编程原则

2009-11-10 16:37:48

VB.NET ANY

2009-10-19 08:55:22

VB.NET多重继承

2010-01-21 16:45:00

VB.NET继承规则

2009-11-03 09:37:33

VB.NET重载

2009-10-30 16:31:55

VB.NET重载方法

2009-10-20 09:39:04

VB.NET Butt

2009-10-13 14:50:59

VB.NET Envi

2010-01-12 16:20:44

VB.NET类

2009-10-20 17:38:54

VB.NET Comp

2009-11-03 10:18:46

VB.NET继承

2009-11-03 13:54:55

VB.NET继承

2009-11-10 15:36:24

VB.NET命名约定

2009-11-10 10:28:20

VB.NET诞生
点赞
收藏

51CTO技术栈公众号