VB.net中的类的构造函数是
[color=#808080]sub New()
end sub[/color]
当然,你也可以加参数。比如Human类的构造函数:
[color=#808080]sub New(Byval Name[/color] as string, byval [color=#000080]Gender[/color] as String, byval [color=#000080]Stature[/color] as integer)
[color=#000080][b]me[/b][/color].Name = [color=#000080]Name[/color] 'me是VB.net中的关键字,表示对象自己,如同java中
me.Gender = [color=#000080]Gender[/color] '的this。java中的super在VB.net中就是MyBase
me.Stature = [color=#000080]Stature[/color]
end sub
这样,我们的老王就是
[color=#808080]dim LaoWang As new Human("老王"[/color], [color=#000080]"男"[/color], [color=#000080]177[/color])
[color=#000000]这样的话,构造Human对象的时候就必须带参数了。我们可以另加一个不带参数的New过程。这里就略过了。
对象不是死的,是活的。对象应该能够主动向外界做出一些表示。这就是事件。比如一个人生了病。这个时候我们就要把他送到医院去。我们先在Human类当中定义一个事件:
public event[/color] FallIll
我们假设某人暴饮暴食,吃出病了。在Eat过程中写上:
[color=#808080]public sub Eat()
raiseevent FallIll [/color][color=#808080]'raiseevent用来引发一个事件[/color]
end sub
外界怎样来接收这个事件呢?用AddHandler。我们要先定义一个过程:
[color=#808080]sub GoToHospital
Console.WriteLine("病人被送到医院去了。")
end sub[/color]
然后将这个过程绑定到一个具体的对象的事件上:
[color=#808080]AddHandler[/color] LaoWang.FallIll, [color=#000080]AddressOf[/color] GoToHospital
这样,一旦执行LaoWang.Eat,就会引发FallIll事件,这时GoToHospital过程就会执行。完整的代码如下:
[color=#808080]imports System[/color]
[color=#808080]public module MyModule
sub Main
dim LaoWang as Human
LaoWang = new Human("老王", "男", 177)
AddHandler LaoWang.FallIll, AddressOf GoToHospital
Console.writeline("{0}, {1}, 身高{2}厘米", _
LaoWang.Name, LaoWang.Gender, LaoWang.Stature)
LaoWang.Eat() '这里引发事件
Console.Read
end sub
sub GoToHospital
Console.WriteLine("病人被送到医院去了。")
end sub
end module[/color]
[color=#808080]public class Human
public Name as String
public Gender as String
public Stature as integer
sub New(Byval Name as string, byval Gender as String, byval Stature as integer)
me.Name = Name
me.Gender = Gender
me.Stature = Stature
end sub
sub New() '不带参数的构造函数
end sub
public event FallIll[/color]
[color=#808080] public sub Eat()
raiseevent FallIll
end sub[/color]
[color=#808080] public sub Sleep()
end sub
public sub SeeADoctor()
end sub
public function Born() as Human
if Gender = "女" then
return new Human("","",50)
else
return nothing
end if
end function
end class
事件还可以带参数。比方我们把FallIll的定义改为:
public event FallIll(Byval Name as String[/color])
然后把Eat的内容改为:
[color=#808080]raiseevent FallIll(me.Name[/color])
接着把GoToHospital的定义改为:
[color=#808080]sub GoToHospital(Byval Name as String[/color])
Console.WriteLine([color=#000080]Name[/color] & "被送到医院去了。")
end sub
这时候运行我们就会看到:“老王被送到医院去了。” align="center" marginwidth="0" marginheight="0" src="http://o.thec.cn/jms003/GGFILECODE336x280.html" frameborder="0" width="468" scrolling="no" height="400">
[color=#808080]sub New()
end sub[/color]
当然,你也可以加参数。比如Human类的构造函数:
[color=#808080]sub New(Byval Name[/color] as string, byval [color=#000080]Gender[/color] as String, byval [color=#000080]Stature[/color] as integer)
[color=#000080][b]me[/b][/color].Name = [color=#000080]Name[/color] 'me是VB.net中的关键字,表示对象自己,如同java中
me.Gender = [color=#000080]Gender[/color] '的this。java中的super在VB.net中就是MyBase
me.Stature = [color=#000080]Stature[/color]
end sub
这样,我们的老王就是
[color=#808080]dim LaoWang As new Human("老王"[/color], [color=#000080]"男"[/color], [color=#000080]177[/color])
[color=#000000]这样的话,构造Human对象的时候就必须带参数了。我们可以另加一个不带参数的New过程。这里就略过了。
对象不是死的,是活的。对象应该能够主动向外界做出一些表示。这就是事件。比如一个人生了病。这个时候我们就要把他送到医院去。我们先在Human类当中定义一个事件:
public event[/color] FallIll
我们假设某人暴饮暴食,吃出病了。在Eat过程中写上:
[color=#808080]public sub Eat()
raiseevent FallIll [/color][color=#808080]'raiseevent用来引发一个事件[/color]
end sub
外界怎样来接收这个事件呢?用AddHandler。我们要先定义一个过程:
[color=#808080]sub GoToHospital
Console.WriteLine("病人被送到医院去了。")
end sub[/color]
然后将这个过程绑定到一个具体的对象的事件上:
[color=#808080]AddHandler[/color] LaoWang.FallIll, [color=#000080]AddressOf[/color] GoToHospital
这样,一旦执行LaoWang.Eat,就会引发FallIll事件,这时GoToHospital过程就会执行。完整的代码如下:
[color=#808080]imports System[/color]
[color=#808080]public module MyModule
sub Main
dim LaoWang as Human
LaoWang = new Human("老王", "男", 177)
AddHandler LaoWang.FallIll, AddressOf GoToHospital
Console.writeline("{0}, {1}, 身高{2}厘米", _
LaoWang.Name, LaoWang.Gender, LaoWang.Stature)
LaoWang.Eat() '这里引发事件
Console.Read
end sub
sub GoToHospital
Console.WriteLine("病人被送到医院去了。")
end sub
end module[/color]
[color=#808080]public class Human
public Name as String
public Gender as String
public Stature as integer
sub New(Byval Name as string, byval Gender as String, byval Stature as integer)
me.Name = Name
me.Gender = Gender
me.Stature = Stature
end sub
sub New() '不带参数的构造函数
end sub
public event FallIll[/color]
[color=#808080] public sub Eat()
raiseevent FallIll
end sub[/color]
[color=#808080] public sub Sleep()
end sub
public sub SeeADoctor()
end sub
public function Born() as Human
if Gender = "女" then
return new Human("","",50)
else
return nothing
end if
end function
end class
事件还可以带参数。比方我们把FallIll的定义改为:
public event FallIll(Byval Name as String[/color])
然后把Eat的内容改为:
[color=#808080]raiseevent FallIll(me.Name[/color])
接着把GoToHospital的定义改为:
[color=#808080]sub GoToHospital(Byval Name as String[/color])
Console.WriteLine([color=#000080]Name[/color] & "被送到医院去了。")
end sub
这时候运行我们就会看到:“老王被送到医院去了。” align="center" marginwidth="0" marginheight="0" src="http://o.thec.cn/jms003/GGFILECODE336x280.html" frameborder="0" width="468" scrolling="no" height="400">