繁体中文
设为首页
加入收藏
当前位置:在线教程首页 >> 程序设计 >> .Net专区 >> VB.net语言 >> VB.Net中文教程(1) 类别与封装性(3)

VB.Net中文教程(1) 类别与封装性(3)

2005-10-10 05:51:00  作者:未知  来源:教程网  浏览次数:211  文字大小:【】【】【

VB.Net中文教程(1) 类别与封装性(3)

 

Messagebox.Show("height = " + str(a.height) + "公尺")

   End Sub

End Class

 

此程序输出如下﹕height = 2.1公尺

   此程序中﹐Tree类别含有 3个资料成员﹐即对象内含有3个资料值,此类别之程序成员能直接存取之。同时,也允许其它程序来存取资料成员之值﹐其存取格式为﹕

              

例如﹕

                a.height = 2.1

 

此指令把 2.1存入对象 a之height变量中。于是对象 a之内容为﹕

  

                    

             

   请看个常见错误如下﹕

 

"ex06.bas

"Some Error Here!

Imports System.ComponentModel

Imports System.Drawing

Imports System.WinForms

"-------------------- ------------------------------------

Class Tree

   Public varity As String

   Public age As Integer

   Public height As Single

End Class

"--------------------------------------------------------

Public Class Form1

   Inherits System.WinForms.Form

  

   Public Sub New()

       MyBase.New()

       Form1 = Me

       "This call is required by the Win Form Designer.

       InitializeComponent()

       "TODO: Add any initialization after the InitializeComponent() call

   End Sub

   "Form overrides dispose to clean up the component list.

   Public Overrides Sub Dispose()

       MyBase.Dispose()

       components.Dispose()

   End Sub

#Region " Windows Form Designer generated code "

   .......

#End Region

   Protected Sub Form1_Click( ByVal sender As Object, ByVal

                           e As System.EventArgs)

       Dim a As New Tree()

       height = 2.1

       Messagebox.Show("height = " + str(a.height) + "公尺")

   End Sub

End Class

 

Form1_Click()程序内之指令── height = 2.1,此height变量并未与对象配合使用﹐计算机不认为它是Tree类别之height变量。计算机视其为Form1_Click()之自动变量(Automatic Variable)﹐但却未见到它的宣告﹐因之程序错了﹗这是对象对其资料成员保护最松的情形﹐因为对象所属类别(即Tree)之外的程序(如Form1_Click()程序)尚能存取资料成员的内容。就像一颗炸弹﹐除了引信管外﹐尚有许多管道可使炸弹内之化学药品爆炸﹔您将不敢把炸弹摆在飞机上﹐因何时会爆炸将无法控制。同理﹐Tree类别之资料──height变量﹐连外部的Form1_Click()皆可随意改变它﹔那么有一天height之内容出问题了﹐将难以追查出错之缘故﹐这种程序将让您大伤脑筋﹐因为您已无法掌握状况了。

   现在的VB程序中﹐能采取较严密之保护措施﹐使您较能控制类别内资料的变化状况。例如﹐

 

"ex07.bas

"Some Error Here!

Imports System.ComponentModel

Imports System.Drawing

Imports System.WinForms

"-----------------------------------------

Class Tree

   Private varity As String

   Private age As Integer

   Private height As Single

End Class

"-----------------------------------------

Public Class Form1

   Inherits System.WinForms.Form

  

   Public Sub New()

       MyBase.New()

       Form1 = Me

       "This call is required by the Win Form Designer.

       InitializeComponent()

       "TODO: Add any initialization after the InitializeComponent() call

   End Sub

   "Form overrides dispose to clean up the component list.

   Public Overrides Sub Dispose()

       MyBase.Dispose()

       components.Dispose()

   End Sub

#Region " Windows Form Designer generated code "

   .......

#End Region

   Public Sub Form1_Click( ByVal sender As Object, ByVal

                        e As System.EventArgs)

       Dim a As New Tree()

       a.height = 2.1

       MessageBox.Show("height = " + str(a.height))

   End Sub

End Class

 

此程序将原来的Public专用字改为Private﹐对Tree类别之资料成员采取严格之保护措施。Public 与Private之区别为──

 

   Public   表示此类别外之程序可来存取资料成员。

   Private  表示此类别外之程序绝无法直接存取资料成员﹐只有程序成员才能存取资料成员。

 

所以﹐计算机看到指令── a.height = 2.1,因Tree类别采取严格保护措施(private)﹐则Form1_Click()程序不能使用height变量名称。所以指令── a.height = 2.1错了。也许您问道﹕这样岂不是无法存取类别内之资料成员吗﹖答案是﹕「类别内之程序成员(Member Function) 可存取资料成员﹐而类别外之程序能藉程序成员代之存取资料成员。」

 

   这如同﹐引信管才能引起炸弹内之化学药品爆炸﹐人们只能经由引信管引爆之﹐让人们觉得使用炸弹既安全又简单。同样地﹐对象经由程序成员和外界沟通﹐可减少外界无意中破坏对象内之资料(无意中引爆炸弹)。例如﹕

 

"ex08.bas

Imports System.ComponentModel

Imports System.Drawing

Imports System.WinForms

"--------------------------------------------------

Class Tree

   Private varity As String

   Private age As Integer

   Private height As Single

   Public Sub input(ByVal hei As Single)

       height = hei

   End Sub

End Class

"--------------------------------------------------

Public Class Form1

   Inherits System.WinForms.Form

  

   Public Sub New()

       MyBase.New()

       Form1 = Me

 

此文章不能满足您的需求?那就就Google一下吧:)
Google
 

责任编辑:admin


相关文章
SA空口令破解和保护
怎样使MySQL更安全?
Mysql数据库的安全配置、实用技巧
如何安全的配置和应用MySQL数据库?
Oracle数据库安全策略分析
SQL Server 2000的安全配置
使一个新的MySQL安装更安全
教您如何安全的应用MySQL
MySQL数据库安全配置
MySQL安全性指南(1)
MySQL安全性指南(2)
 

最新文章

更多

· 类别与封装性(1)
· 类别与封装性(2)
· 类别与封装性(3)
· 类别与封装性(4)
· 类别与封装性(5)
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(3)程序多...

推荐文章

更多

· 类别与封装性(1)
· 类别与封装性(2)
· 类别与封装性(3)
· 类别与封装性(4)
· 类别与封装性(5)
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(3)程序多...

热点文章

更多