菜鸟涛

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

呵呵,已经是第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
posted on 2011-04-20 13:56  菜鸟涛  阅读(395)  评论(4编辑  收藏  举报