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
相关文章推荐
- asp.net报出“非静态字段、方法或属性’System.Web.UI.Page.Response.get‘要求对象引用”错误
- asp.net “非静态字段、方法或属性’System.Web.UI.Page.Response.get‘要求对象引用”
- 类和对象(字段=变量、方法=函数、方法重载、静态成员、属性、构造函数)
- Chapter 8. 面向对象(类、对象、字段、方法、属性、构造函数)
- 错误:非静态的字段、方法或属性“System.Web.UI.Page.Session.get”要求对象引用
- 这么详细的分类 VB/VB.NET源代码网站你见过没有? VB/VB.NET中的每一个方法,每一个操作,每一个函数,每一个类.每一个属性,每一个事件都有相应的范例代码
- JavaScript 内置对象(二):Date 对象(构造函数、属性和方法)
- 非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用
- VS提示“非静态的字段、方法或属性要求对象引用”
- 错误“非静态的字段、方法或属性“System.Web.UI.Page.Response.get”要求对象引用”的解决办法
- 非静态的字段、方法或属性“System.Web.UI.Page.ClientScript...”要求对象引用 (封装注册脚本)
- 面向对象概念:字段、属性和方法
- vb.net中用户自定义控件中属性、方法、事件的理解
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
- 错误“非静态的字段、方法或属性“System.Web.UI.Page.Server.get”要求对象引用”
- 分享 .NET(C#,VB.NET,ADO.NET)中取自增字段值的方法 SCOPE_IDENTITY()
- Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)
- 这个问题不简单:非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用
- 非静态的字段,方法或属性。。。。。。要求对象引用