加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于VB.NET基类继承、重载、隐藏的总结归纳

发布时间:2020-12-16 22:16:53 所属栏目:大数据 来源:网络整理
导读:文章主要介绍了VB.NET基类的继承,重写,重载,隐藏,VB.NET类成员访问的修饰符Friend,private ,protected,protected friend,public 。 很喜欢用VB.NET开发语言,在网上也经常收集,自己也总结了一点小笔记,在这里共大家参考一下,本文主要对VB.NET基类的

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

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

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

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

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

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

  • <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)>PublicShadows基类名称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. ClassA
  2. PublicSubF()
  3. Debug.Print("基类不能重写")
  4. EndSub
  5. PublicOverridableSubG()
  6. Debug.Print("基类可重写")
  7. EndSub
  8. PublicSubH()
  9. Debug.Print("A.H")
  10. EndSub
  11. EndClass
  12. ClassB
  13. InheritsA'继承A
  14. PublicShadowsFAsString="隐藏基类,重新生成一个"
  15. PublicOverridesSubG()
  16. Debug.Print("重写")
  17. EndSub
  18. PublicOverloadsSubG(ByValsAsInt32)
  19. Debug.Print("重载")
  20. EndSub
  21. '隐藏基类H成员,编辑器中看不到提示,但依然可以用
  22. <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>PublicShadowshAsInt16="3"
  23. EndClass
  24. PublicClassForm1
  25. PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
  26. DimbAsNewB()
  27. DimaAsNewA
  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. EndSub
  36. EndClass

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读