vb窗体实例化与set语句的用法

本文深入探讨了面向对象编程(OOP)中的核心概念——类与对象,解释了实例化的意义和过程。通过VB实例,展示了窗体的实例化,并详细解析了Set语句在对象引用中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是实例化:


  类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

  对象(object) 是一件事、一个实体、一个名词,可以获得的东西,可以想象有自己的标识的任何东西。一些对象是活的,一些对象不是。现实世界中的例子有汽车、人、房子、桌子、植物、支票、雨衣。

实例和对象是一种东西,叫法不同而已,实例化也可理解为:把抽象的类变成具体的对象。

  举个很简单的例子,你创建了一个猫的类,等你实例化,就定位到某一只猫身上了。这只猫就有了猫的共同属性,例如重量、颜色等。那些属性的属性值就是这只猫的特征。

 
 

vb的窗体实例化:


  vb6是基于面向对象的语言,他没有继承的概念,所谓“标准控件”,包括窗体,都是直接使用的对象。
  但学生里的代码任然将窗体实例化:

Sub Main()
    Set FmainForm = New frmMain '显示主窗体实例
    FmainForm.Show
End Sub

  也许是为了让大家习惯面向对象,如果抽象到生活中,你想要有一扇窗,就必须安装一扇,安装上的这一扇就相当于New了个对象,有了这个对象就可以进行操作了。

  在其他语言中,例如c++/C#/ ,要使用一个窗体,是通过首先继承一个类并重载相关的属性与方法,然后实例化这个类来实现的。

在这里插入图片描述

 
 

set语句的用法:


  Set 语句:引用类赋值,一般是对VB中除基本数据类型以外的变量进行赋值的语句。指针copy了一份给了新变量,新变量处理复制过来的指针所指向的对象。

  Let语句:值类型赋值,数据copy了一份给了新变量,新变量处理复制过来的数值,如: Let a=b,let可省略不写。
 
 
语法:
Set objectvar = {[New] objectexpression | Nothing}

 

  1. objectvar:必需的。是变量或属性的名称,遵循标准变量命名约定。如果 objectvar 包含了一个对象引用,则在赋新值时释放该引用。
  2. New:可选的。通常在声明时使用 New,以便可以隐式创建对象。如果 New 与 Set 一起使用,则将创建该类的一个新实例。
dim a as object		 'a 变量没有实例化,只是说明a是这么个类型的变量,但他的功能是不可用的'
dim a as new object  '这时a是实例化的,可以使用'

'或者以下两种写法也可以将a实例化'
set a=createobject("xxxxxx") 
set a=new object

  这个时候创建出来的对象实际只和a联系在一起,如果有set b=a 这时候,相当于这个a实例又有了b这个名字,两个变量操作同一个对象实例:

Dim a As New Collection 	'定义a为一个集合对象'
a.Add "test"  				'a 集合中添加一个元素'
 
Dim b As Object 			'定义B'
 
Set b = a 					'令b引用a,也就是b的指针指向了a'
Debug.Print b(1)			'这时候b的第一个元素里,我们可以得到刚才在a添加的那个test'
b.Add "addition" 			'在b添加一个元素'
 
Debug.Print a(1), a(2) 		'在a里同样能得到新增的这个元素'
  1. object expression(对象表达式):必需的。由对象名,所声明的相同对象类型的其它变量,或者返回相同对象类型的函数或方法所组成的表达式。
  2. Nothing:可选的。断绝 objectvar 与任何指定对象的关联。若没有其它变量指向 objectvar 原来所引用的对象,将其赋为 Nothing 会释放该对象所关联的所有系统及内存资源。

说明:

  为确保合法,objectvar 必须是与所赋对象相一致的对象类型。
  Dim、Private、Public、ReDim以及 Static 语句都只声明了引用对象的变量。

  下面的示例说明了如何使用 Dim 来声明 Form1 类型的数组。Form1 实际上还没有实例。然后使用 Set 将新创建的 Form1 的实例的引用赋给 myChildForms 变量。在 MDI 应用程序中可以使用这些代码来创建子窗体。

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

  通常,当使用 Set 将一个对象引用赋给变量时,并不是为该变量创建该对象的一份副本,而是创建该对象的一个引用。可以有多个对象变量引用同一个对象。因为这些变量只是该对象的引用,而不是对象的副本,因此对该对象的任何改动都会反应到所有引用该对象的变量
 
 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倔强的腿毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值