在向大家详细介绍VB.NET类构造之前,首先让大家了解下VB.NET类是什么,然后全面介绍VB.NET类构造。
VB.NET类
我在以前的文章里曾经提到:VB.NET的出现使得VB6在类的概念及其操作上发生了巨大的变化。现在就让我们进到这些变化中来进行更深入的探讨。首先让我们看看类到底意味着什么。
不妨假设我把你带回到了学院,现在你走进一个教室,我要求你解释一下什么是类(class),你可能会这样回答:“一组学生形成一个班(class)。”呵呵,如果这样回答,你真是歪打正着了:没错,在这里,组就是最关键的词。用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。
.NET赋予类的新面目
VB6和VB.NET在类的用法上有一个首要的显著差别,那就是后者不再采用Set关键词了。除此以外,在代码中定义类的方法也有所改变。这些变动不仅会直接影响你编写的代码而且更会改变你组织源文件的方式。
在VB6下,每个类都必须在单个源文件内增加和定义。而在VB.NET下就不是这样了:类以代码块的形式定义,如下所示:
- Public Class MyClass
- '在这里编写类的成员代码!
- End Class
面对如此革命性的变化,有些人可能会急得嘴角发泡,而大多数人却可能并不在乎或不明白用代码块定义类到底用什么用。说真的,这全看你的口味。有些人喜欢而且希望一个文件中就只定义一个类,而另一些人则更愿意逻辑地组织他们的类。例如,如果你有一个product类,同时又有了一个对应的 products collection类,那么你完全可以把它们放在同一文件里以便更好地组织源文件。
VB.NET类构造和析构
当你的代码在创建一个类的实例时会调用该类的一个特殊方法:构造器(constructor)。同样的,在类被破坏的时候则会调用析构器(destructor)方法。在大多数面向对象语言里牵扯到类的构造和析构时通常都采用了以上两个一般术语而非具体编码时的成员名。我则喜欢采用术语“structors”来引用构造和析构。在VB6语言里,具体的“structors”是Class_Initialize和 Class_Terminate。在VB.NET下,Class_Initialize方法则被重命名为New,而Class_Terminate则成了 Finalize。
按照VB6对类构造器的实现限制,程序员不得给该方法添加参数。然而,VB.NET中则对构造器方法提供了参数支持。在VB.NET下,你现在可以随意地把参数添加到这个方法中来,甚至可以重载该方法。
参数化的构造器如何灵活地创建类呢?举个例子,假设有一个ADO Connection类。用VB6语言的话,你首先得把该类实例化,然后在代码中用ConnectionString属性定义连接。要用VB.NET的话,这个类的构造器就被参数化和重载了,这样,在程序员给对象实例化时就可以给它传递一个连接字符串,这样你就不必关心代码内如何设置以后的连接了。当然,你完全可以按老办法做:什么参数都不传递,以后在代码中设置连接字符串。
【编辑推荐】