呵呵,已经是第5天啦,感觉渐渐进入状态了。
那么今天要学习goal:大体了解vb.net里Namespace ,Assembly,Module,Class。以及在vb.net项目中怎么实现java里的包的概念,并实际运用到项目中来。
摘抄整理 as follows:
Namespace:命名空间组织在程序集中定义的对象。程序集可以包含多个命名空间,而命名空间可以包含其他命名空间。命名空间避免了使用大的对象组(如类库)时的多义性并简化了引用。 命名空间解决了有时被称为“命名空间污染”的问题,即在另一个库中使用类似名称妨碍了类库的开发者。这些同现有组件的冲突有时被称为“名称冲突”。在命名空间内,可以定义像模块、接口、类、委托、枚举、结构以及其他命名空间这样的项。无法在命名空间级别定义诸如属性、过程、变量和事件等项目。必须在诸如模块、结构或类等容器内声明这些项目。
Assembly: 在vb.net project,会有个AssemblyInfo.vb:默认组件文件和程序集清单,提供用来获取应用程序信息(如版本号、说明、加载的程序集等)的属性。
Module:早先的VB语言都有模块和类模块的概念。所谓模块一般就是存放公用的一些方法(Sub)或者函数(Function),而类模块,相当于就是我们经常所说的类的概念.
特征:
1.模块(Module)里面可以直接有方法,这些方法自动就是静态的(或者称为共享的——VB.NET中的关键字是Shared),这些方法可以直接调用,所以Module是无法实例化,也没有必要实例化的
2.模块无法继承,也无法实现接口
3.模块里面可以有类,但其实这个类并不需要真的通过模块作为前缀来引用。所以模块有点虚的概念
4.模块可以被组织到命名空间中去,因为模块其实是个虚的,所以它的方法也可以直接外层的命名空间调用。
5.模板的成员不用提供Module名称就可以被访问,是全局共享的,可以在程序的任意位置访问这些成员。
Class:是现实世界中的一个实体,可以说是OOP的基础。
特征:
1.Class里不能用Static修饰Sub和Function。
2.Shared既可以修饰Sub也可以修饰Function。
3.类字段默认是private。
4.类型可以继承一个基类,可以实现一个或者多个接口
Ok,大体明白了Namespace ,Assembly,Module,Class的概念,也可以看出来,一般情况下Assembly是最大滴,Namespace 可以包含Module和Class,Module里可以有Class。
如下代码:
'''可以用命名空间封装,这是比较好的做法
Namespace Namespace1
''' 模块无法继承,无法实现接口
Module Module1
''' 模块里面的方法都是静态的,无需实例化,也无从实例化
Sub Main()
Dim c As New class1
c.Name = "module"
Console.WriteLine(c.Name)
Console.WriteLine(c.GetClassName())
Console.Read()
End Sub
''' 类型可以放在模块里面,但主要的现实意义在于分类存放而已,放在模块里面并不影响该类型对外的引用。
'''例如我们并不一定需要用Namespace1.Module1.Class1,而是直接通过Namespace1.Class1就可以对其进行引用
Public Class class1 : Implements IComparable
''' 类型可以继承一个基类,可以实现一个或者多个接口
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Function GetClassName() As String
Return Me.GetType().ToString()
End Function
End Class
End Module
End Namespace