成都网站建设设计

将想法与焦点和您一起共享

VB.NET构造器是什么

本篇内容主要讲解“VB.NET构造器是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VB.NET构造器是什么”吧!

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、做网站、新晃网络推广、微信小程序、新晃网络营销、新晃企业策划、新晃品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供新晃建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

面向对象编程现在被大多数人使用,这里我们一起来看看关于面向对象中构造器的理解。VB.NET构造器的范围对类的行为有重要的含义。一个Public类中的Friend构造器使我们只可以从同一个程序集内部创建这个类,所以它同你在VB6的类中用的PublicNotCreatable设置有很多共同之处。一个私有的(private)VB.NET构造器使这个类根本不能创建,如果类只是共享方法的一个容器,这种构造器就很有用。

  • 快速学习VB.NET追加文件

  • 怎样将OCX植入VB.NET执行文件内

  • 概括总结VB.NET OPEN语句5个方法

  • 归纳总结VB.NET函数宝典

  • 快速使用VB.NET shell程序

(这样的类的例子有System.Console和System.Environment。)更确切地说,一个代码片段可以实例化一个带有私有构造器的类,只要那个代码位于类内部或嵌套的类中,因为一个嵌套的类型可以访问包含它的类型的私有的成员。创建只包含一个共享成员的一个 VB.NET类的更简单的方法就是定义一个Module。Module是规则的、不能创建的类,它的成员是静态的。注意,.NET runtime对模块并不很重视(C#中没有Module):VB.NET对模块的支持只可以简化VB6代码的移植,而且编译器将一个Module中的所有成员都明确地转换成静态成员。

注意初始化字段,前面的讲述可能意味着私有VB.NET构造器只有在很少的情况下才有用,但实际并不是这样的。例如,当你的类包含许多字段的初始化设置时,定义一个空的Private Sub New过程就很方便:

Public MinSize As Integer = 10 Public MaxSize As Integer = 1000 ' ...(other fields with initializers)

编译器在每个构造器开始处都会进行隐含的赋值,保证在构造器运行时,所有的字段都包含正确的初始值。如果你有20个初始化字段和10个构造器,那么你的类就会包含多达200个隐含的赋值,这样就会浪费内存中和磁盘上的字节。如果你定义一个虚拟的不带参数的私有构造器,并让所有的公有构造器调用它,那么编译器就只添加20个隐含的语句到私有构造器中。通过Microsoft Intermediate Language Disassembler(ILDASM)运行产生的可执行的文件,你就可以看到在每种情况下编译器创建的代码。

当客户端要通过一个共享的函数(作为类的工厂方法(factory method ))来创建类的实例时,就体现了私有构造器的另一个好处。一个共享的方法可以让你在创建类的一个新实例前运行一些代码——例如,查看一个具有相同属性的对象是否在你内部管理的对象池中。你不能用一个规则的构造器来实现这种功能,因为只有在一个新实例已经运行时,规则的构造器的代码才运行(见列表1)。

你在从一个类派生一个更简单的新类时,可以看到OOP的强大。派生的类自动继承基类的所有字段、属性、事件和接口,所以你只需要关注你想添加到派生的类中的成员:

Class Person  Public FirstName As String  Public LastName As String  Function CompleteName() As String  Return FirstName & " " & LastName  End Function  End Class  Class Customer  Inherits Person  ' a new field and a new method  Public Title As String  Function ReverseName() As String  Return LastName & ", " & FirstName  End Function  End Class

更好的是,如果你期望派生的类有不同的行为,你还可以覆盖基类中的属性或方法。例如,你可能想让Customer.CompleteName方法以 “Mr. John Doe”的形式返回一个字符串。你必须做两件事来覆盖一个成员:将基类的成员标记为Overridable,使它成为一个虚拟的成员,用关键字 Overrides来标记派生的类的成员:

' in Person class  Overridable Function CompleteName() As String  ' ...(as before)  End Function   ' in Customer class  Overrides Function CompleteName() _  As String  Return Title & " " & FirstName _  & " "& LastName  End Function

重用基类中的代码
Visual Studio .NET为我们在一个派生的类中写被覆盖的成员的代码提供了一个很好的捷径:在编辑窗口上方最左边的ComboBox中选择类名字下的(Overrides)成员,然后在最右边的ComboBox中选择你想覆盖的成员(见图1)。在派生的类中你不需要用关键字Overridable,因为被覆盖的方法本身就是可以被覆盖的。如果你出于某种原因想停止进一步覆盖那个方法,你必须用关键字NotOverridable标记它:

' derived classes can't override this  NotOverridable Overrides Function _  CompleteName()As String  ' ...  End Function

到此,相信大家对“VB.NET构造器是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前名称:VB.NET构造器是什么
分享网址:http://chengdu.cdxwcx.cn/article/gopide.html