您的位置:首页 > 编程语言 > VB

VB.net 类、对象、字段、属性、方法、构造函数

2015-05-14 18:00 288 查看
'类、对象、字段、属性、方法、构造函数
'------------------------------------------- 类、对象、字段、属性、方法、构造函数 ----------------------------------------
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text

''' <summary>
''' 定义英雄类(hero)
''' </summary>
Public Class Hero
''' <summary>
''' 定义字段
''' </summary>
Private _name As String '姓名
Private _life As Integer '生命值
Private _grade As Integer '等级

''' <summary>
''' 字段封装成属性
''' </summary>
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Public Property Life() As Integer
Get
Return _life
End Get
Set(ByVal value As Integer)
_life = value
End Set
End Property

Public Property Grade() As Integer
Get
Return _grade
End Get
Set(ByVal value As Integer)
_grade = value
End Set
End Property

''' <summary>
''' 无参构造函数 —— 构造函数初始化字段赋值
''' 注意:构造函数名和类名必须相同
''' </summary>
Public Sub New()
Me._life = 1000
Me._grade = 1
End Sub

''' <summary>
''' 有参构造函数 —— 构造函数的重载
''' </summary>
''' <param name="strName">姓名 — 形参传入</param>
''' <param name="intLife">生命值 — 形参传入</param>
''' <param name="intGrade">等级 — 形参传入</param>
Public Sub New(ByVal strName As String, ByVal intLife As Integer, ByVal intGrade As Integer)
Me._name = strName
Me._life = intLife
Me._grade = intGrade
End Sub

''' <summary>
''' 有参构造函数 —— 构造函数的重载
''' </summary>
''' <param name="intGrade">等级 — 形参传入</param>
Public Sub New(ByVal intGrade As Integer)
Select Case intGrade
Case 1
Me._grade = 1
Me._life = 1000
Case 2
Me._grade = 2
Me._life = 2000
End Select
End Sub

''' <summary>
''' 无参无返回值的方法
''' 方法的访问修饰符默认情况下为 private,一般用public
''' </summary>
Public Sub GameStart()
MessageBox.Show("游戏开始咯~\(≧▽≦)//~")
End Sub

''' <summary>
''' 无参带返回值的方法
''' 注意:
''' ① 如果不需要返回任何值,方法可以返回 void 数据类型。
''' ② 如果返回值类型不是void,必须有return语句。
''' ③ return语句必须位于方法的最尾部,且return后的返回语句的数据类型必须与方法指定的返回类型相同。
''' </summary>
''' <returns>返回结果为string类型的值</returns>
Public Function GameBegin() As String
Return "-----------------------游戏开始-----------------------"
End Function

''' <summary>
''' 基本战斗方法 —— 有参带返回值的方法
''' </summary>
''' <param name="heroObject">被打的英雄对象 — 形参传入</param>
''' <returns>返回结果为string类型的值</returns>
Public Function Battle(ByVal heroObject As Hero) As String
heroObject.Life -= 100
Return heroObject.Name & "的生命值降为:" & heroObject.Life
End Function

''' <summary>
''' 基本战斗方法的重载
''' 方法的重载一般用于在同一个类中实现同名方法的多个版本功能
''' 注意:重载要求多个版本的同名方法中,访问修饰符、返回类型、方法名必须一样,参数列表(参数类型或者参数个数)必须不一样
''' </summary>
''' <param name="battleType">绝招类型 — 形参传入</param>
''' <param name="heroObject">被打的英雄对象 — 形参传入</param>
''' <returns>返回结果为string类型的值</returns>
Public Function Battle(ByVal battleType As Integer, ByVal heroObject As Hero) As String
Dim strMessage As String = "使用绝招 —— "
Select Case battleType
Case 1
heroObject.Life -= 100
Case 2
heroObject.Life -= 200
Case 3
heroObject.Life -= 500
Case 4
strMessage = "一招致命!"
heroObject.Life = 0
Case Else
strMessage = "绝招类型有误!"
End Select
strMessage &= heroObject.Name & "的生命值降为:" & heroObject.Life
Return strMessage
End Function

End Class


 


 


Public Class Form1
Public 计时器 As Integer

Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click

btnOK.Enabled = False
'实例化英雄对象1
'Dim hero1 As New Hero()
Dim hero1 As New Hero("张文龙", 1000, 1) 'new后面调用的是构造函数
'通过属性给对象赋初值
'hero1.Name = "张文龙"
'hero1.Life = 1000
'hero1.Grade = 1

Delay(3000)
hero1.GameStart() '调用对象的无参无返回值方法
Delay(3000)
labResult.Text = hero1.GameBegin() '调用对象的无参带返回值方法

'实例化英雄对象2
'Dim hero2 As New Hero()
Dim hero2 As New Hero("潘媛媛", 2000, 2)
'通过属性给对象赋初值
'hero2.Name = "潘媛媛"
'hero2.Life = 2000
'hero2.Grade = 2

Delay(3000)
'//hero1发起战斗,调用Battle()方法
labResult.Text += ControlChars.Lf & hero1.Battle(hero2) '有参带返回值的方法
'//hero2发起反击,调用Battle()方法

Delay(3000)

labResult.Text += ControlChars.Lf & hero2.Battle(hero1)
'//hero1使用绝招,调用Battle()方法的重载

Delay(3000)

labResult.Text += ControlChars.Lf & hero1.Battle(3, hero2)

Delay(3000)
'//hero2使用绝招反击,调用Battle()方法的重载
labResult.Text += ControlChars.Lf & hero2.Battle(4, hero1)

'两人对打
Dim i As Integer = 1
Do
Delay(3000)
labResult.Text += ControlChars.Lf & "第" & i & "场对决:"

Delay(3000)
labResult.Text += ControlChars.Lf & hero1.Battle(hero2)

Delay(3000)
labResult.Text += ControlChars.Lf & hero2.Battle(hero1)

If hero1.Life <= 0 OrElse hero2.Life <= 0 Then
Exit Do
End If
i += 1
Loop

Delay(3000)
labResult.Text += ControlChars.Lf & "-----------------游戏结束-----------------"
btnOK.Enabled = True
End Sub

Public Shared Sub Delay(ByVal Interval)
Dim __time As DateTime = DateTime.Now
Dim __Span As Int64 = Interval * 10000   '因为时间是以100纳秒为单位。
While (DateTime.Now.Ticks - __time.Ticks < __Span)
Application.DoEvents()
End While
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
End
End Sub
End Class


 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐