VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.net 类、对象、字段、属性、方法、构造函数

 

  1. '类、对象、字段、属性、方法、构造函数
  2.  
    '------------------------------------------- 类、对象、字段、属性、方法、构造函数 ----------------------------------------
  3.  
    Imports System
  4.  
    Imports System.Collections.Generic
  5.  
    Imports System.ComponentModel
  6.  
    Imports System.Data
  7.  
    Imports System.Drawing
  8.  
    Imports System.Linq
  9.  
    Imports System.Text
  10.  
     
  11.  
    ''' <summary>
  12.  
    ''' 定义英雄类(hero)
  13.  
    ''' </summary>
  14.  
    Public Class Hero
  15.  
    ''' <summary>
  16.  
    ''' 定义字段
  17.  
    ''' </summary>
  18.  
    Private _name As String '姓名
  19.  
    Private _life As Integer '生命值
  20.  
    Private _grade As Integer '等级
  21.  
     
  22.  
    ''' <summary>
  23.  
    ''' 字段封装成属性
  24.  
    ''' </summary>
  25.  
    Public Property Name() As String
  26.  
    Get
  27.  
    Return _name
  28.  
    End Get
  29.  
    Set(ByVal value As String)
  30.  
    _name = value
  31.  
    End Set
  32.  
    End Property
  33.  
     
  34.  
    Public Property Life() As Integer
  35.  
    Get
  36.  
    Return _life
  37.  
    End Get
  38.  
    Set(ByVal value As Integer)
  39.  
    _life = value
  40.  
    End Set
  41.  
    End Property
  42.  
     
  43.  
    Public Property Grade() As Integer
  44.  
    Get
  45.  
    Return _grade
  46.  
    End Get
  47.  
    Set(ByVal value As Integer)
  48.  
    _grade = value
  49.  
    End Set
  50.  
    End Property
  51.  
     
  52.  
    ''' <summary>
  53.  
    ''' 无参构造函数 —— 构造函数初始化字段赋值
  54.  
    ''' 注意:构造函数名和类名必须相同
  55.  
    ''' </summary>
  56.  
    Public Sub New()
  57.  
    Me._life = 1000
  58.  
    Me._grade = 1
  59.  
    End Sub
  60.  
     
  61.  
    ''' <summary>
  62.  
    ''' 有参构造函数 —— 构造函数的重载
  63.  
    ''' </summary>
  64.  
    ''' <param name="strName">姓名 — 形参传入</param>
  65.  
    ''' <param name="intLife">生命值 — 形参传入</param>
  66.  
    ''' <param name="intGrade">等级 — 形参传入</param>
  67.  
    Public Sub New(ByVal strName As String, ByVal intLife As Integer, ByVal intGrade As Integer)
  68.  
    Me._name = strName
  69.  
    Me._life = intLife
  70.  
    Me._grade = intGrade
  71.  
    End Sub
  72.  
     
  73.  
    ''' <summary>
  74.  
    ''' 有参构造函数 —— 构造函数的重载
  75.  
    ''' </summary>
  76.  
    ''' <param name="intGrade">等级 — 形参传入</param>
  77.  
    Public Sub New(ByVal intGrade As Integer)
  78.  
    Select Case intGrade
  79.  
    Case 1
  80.  
    Me._grade = 1
  81.  
    Me._life = 1000
  82.  
    Case 2
  83.  
    Me._grade = 2
  84.  
    Me._life = 2000
  85.  
    End Select
  86.  
    End Sub
  87.  
     
  88.  
    ''' <summary>
  89.  
    ''' 无参无返回值的方法
  90.  
    ''' 方法的访问修饰符默认情况下为 private,一般用public
  91.  
    ''' </summary>
  92.  
    Public Sub GameStart()
  93.  
    MessageBox.Show("游戏开始咯~\(≧▽≦)//~")
  94.  
    End Sub
  95.  
     
  96.  
    ''' <summary>
  97.  
    ''' 无参带返回值的方法
  98.  
    ''' 注意:
  99.  
    ''' ① 如果不需要返回任何值,方法可以返回 void 数据类型。
  100.  
    ''' ② 如果返回值类型不是void,必须有return语句。
  101.  
    ''' ③ return语句必须位于方法的最尾部,且return后的返回语句的数据类型必须与方法指定的返回类型相同。
  102.  
    ''' </summary>
  103.  
    ''' <returns>返回结果为string类型的值</returns>
  104.  
    Public Function GameBegin() As String
  105.  
    Return "-----------------------游戏开始-----------------------"
  106.  
    End Function
  107.  
     
  108.  
    ''' <summary>
  109.  
    ''' 基本战斗方法 —— 有参带返回值的方法
  110.  
    ''' </summary>
  111.  
    ''' <param name="heroObject">被打的英雄对象 — 形参传入</param>
  112.  
    ''' <returns>返回结果为string类型的值</returns>
  113.  
    Public Function Battle(ByVal heroObject As Hero) As String
  114.  
    heroObject.Life -= 100
  115.  
    Return heroObject.Name & "的生命值降为:" & heroObject.Life
  116.  
    End Function
  117.  
     
  118.  
    ''' <summary>
  119.  
    ''' 基本战斗方法的重载
  120.  
    ''' 方法的重载一般用于在同一个类中实现同名方法的多个版本功能
  121.  
    ''' 注意:重载要求多个版本的同名方法中,访问修饰符、返回类型、方法名必须一样,参数列表(参数类型或者参数个数)必须不一样
  122.  
    ''' </summary>
  123.  
    ''' <param name="battleType">绝招类型 — 形参传入</param>
  124.  
    ''' <param name="heroObject">被打的英雄对象 — 形参传入</param>
  125.  
    ''' <returns>返回结果为string类型的值</returns>
  126.  
    Public Function Battle(ByVal battleType As Integer, ByVal heroObject As Hero) As String
  127.  
    Dim strMessage As String = "使用绝招 —— "
  128.  
    Select Case battleType
  129.  
    Case 1
  130.  
    heroObject.Life -= 100
  131.  
    Case 2
  132.  
    heroObject.Life -= 200
  133.  
    Case 3
  134.  
    heroObject.Life -= 500
  135.  
    Case 4
  136.  
    strMessage = "一招致命!"
  137.  
    heroObject.Life = 0
  138.  
    Case Else
  139.  
    strMessage = "绝招类型有误!"
  140.  
    End Select
  141.  
    strMessage &= heroObject.Name & "的生命值降为:" & heroObject.Life
  142.  
    Return strMessage
  143.  
    End Function
  144.  
     
  145.  
    End Class
 
 

  1.  
    Public Class Form1
  2.  
    Public 计时器 As Integer
  3.  
     
  4.  
    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
  5.  
     
  6.  
    btnOK.Enabled = False
  7.  
    '实例化英雄对象1
  8.  
    'Dim hero1 As New Hero()
  9.  
    Dim hero1 As New Hero("张文龙", 1000, 1) 'new后面调用的是构造函数
  10.  
    '通过属性给对象赋初值
  11.  
    'hero1.Name = "张文龙"
  12.  
    'hero1.Life = 1000
  13.  
    'hero1.Grade = 1
  14.  
     
  15.  
    Delay(3000)
  16.  
    hero1.GameStart() '调用对象的无参无返回值方法
  17.  
    Delay(3000)
  18.  
    labResult.Text = hero1.GameBegin() '调用对象的无参带返回值方法
  19.  
     
  20.  
     
  21.  
    '实例化英雄对象2
  22.  
    'Dim hero2 As New Hero()
  23.  
    Dim hero2 As New Hero("潘媛媛", 2000, 2)
  24.  
    '通过属性给对象赋初值
  25.  
    'hero2.Name = "潘媛媛"
  26.  
    'hero2.Life = 2000
  27.  
    'hero2.Grade = 2
  28.  
     
  29.  
     
  30.  
     
  31.  
    Delay(3000)
  32.  
    '//hero1发起战斗,调用Battle()方法
  33.  
    labResult.Text += ControlChars.Lf & hero1.Battle(hero2) '有参带返回值的方法
  34.  
    '//hero2发起反击,调用Battle()方法
  35.  
     
  36.  
    Delay(3000)
  37.  
     
  38.  
    labResult.Text += ControlChars.Lf & hero2.Battle(hero1)
  39.  
    '//hero1使用绝招,调用Battle()方法的重载
  40.  
     
  41.  
    Delay(3000)
  42.  
     
  43.  
    labResult.Text += ControlChars.Lf & hero1.Battle(3, hero2)
  44.  
     
  45.  
     
  46.  
    Delay(3000)
  47.  
    '//hero2使用绝招反击,调用Battle()方法的重载
  48.  
    labResult.Text += ControlChars.Lf & hero2.Battle(4, hero1)
  49.  
     
  50.  
     
  51.  
     
  52.  
    '两人对打
  53.  
    Dim i As Integer = 1
  54.  
    Do
  55.  
    Delay(3000)
  56.  
    labResult.Text += ControlChars.Lf & "第" & i & "场对决:"
  57.  
     
  58.  
    Delay(3000)
  59.  
    labResult.Text += ControlChars.Lf & hero1.Battle(hero2)
  60.  
     
  61.  
    Delay(3000)
  62.  
    labResult.Text += ControlChars.Lf & hero2.Battle(hero1)
  63.  
     
  64.  
    If hero1.Life <= 0 OrElse hero2.Life <= 0 Then
  65.  
    Exit Do
  66.  
    End If
  67.  
    i += 1
  68.  
    Loop
  69.  
     
  70.  
    Delay(3000)
  71.  
    labResult.Text += ControlChars.Lf & "-----------------游戏结束-----------------"
  72.  
    btnOK.Enabled = True
  73.  
    End Sub
  74.  
     
  75.  
     
  76.  
     
  77.  
    Public Shared Sub Delay(ByVal Interval)
  78.  
    Dim __time As DateTime = DateTime.Now
  79.  
    Dim __Span As Int64 = Interval * 10000 '因为时间是以100纳秒为单位。
  80.  
    While (DateTime.Now.Ticks - __time.Ticks < __Span)
  81.  
    Application.DoEvents()
  82.  
    End While
  83.  
    End Sub
  84.  
     
  85.  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  86.  
    End
  87.  
    End Sub
  88.  
    End Class
 
 


相关教程