[原创]:接口和类的形象理解

   我想把接口比作钥匙,可创建的类比作一个小的四合院,里面有很多间房子,物品等。有的放在院子里,有的放在各个房子里。其实各个房子可以比作类中的属性,方法和事件。
   我们声明了一个接口,如果一个可创建的类执行了这个接口,那么这个接口就可以操作这个类。接口定义了很多属性,方法和事件的原型,好比C中函数的声明。如果在一个类中实现了这些属性方法和事件,那么我们我们就可以用这个接口执行类中的相应的代码。我们还可以通过接口继承获得操作这些类的权限。获得权限以后,就可以在规则的监督下操作了。类中的方法都对应了相应接口,这些方法对其它的接口来说是透明的。
   如果你获得了一个打开四合院大门的钥匙,那么你就可以进入四合院,使用院子里面的公有的东西,比如桌子,板凳等。如果你忘了带钥匙,那么你可以向那些同样拥有进入四合院的钥匙的人借钥匙然后进入四合院。进入四合院以后,如果你还拥有打开其中一个或者是几个房门的钥匙,那么那些房子的东西当然你就可以使用了,但是你要遵守一定的规则,你不能把它弄坏了,这样会有人谴责你的哦,而且可能你不可以把它拿到别的地方,因为它存在就是要放在那个房子里面的。
   

接口的定义:
比如
Option Explicit

Public Property Let ReferenceHeight(ByVal z As Double)

End Property

Public Property Get ReferenceHeight() As Double

End Property

Public Property Let HeightType(ByVal b As TriangleHeightType)

End Property

Public Property Get HeightType() As TriangleHeightType

End Property

所谓的只读或者只写属性就是只有get或者是let属性了!这样就定义了一个接口

在别的类(clsExample)中可以通过
Implements ITriangleHeightFilter
这样的语句使用接口,然后在这个类的代码中一定要实现ITriangleHeightFilter定义的所有元素(属性,方法,事件等)。

以下代码对理解接口和类比较重要:

其实是微软的帮助,为了更好的理解接口和类,我小小的改进、
Implements 语句示例
下面的示例说明如何使用 Implements 语句来编写多个类都可以使用的一系列声明。通过 Implements 语句共享这些声明,所有的类都不必再自己进行声明。

假设有两个窗体。其中 Selector 窗体有两个按钮,Customer Data 和 Supplier Data。若要输入客户或供应商的名称及地址信息,用户就单击 Selector 窗体的 Customer Date 按钮或 Supplier Date 按钮,然后使用 Data Entry 窗体来输入名称和地址。Data Entry 窗体有两个文本字段,Name 和 Address。

下面的共享声明的代码位于称为 IPersonalData 的类中:

其实这个类就是接口的定义,我们可以把IPersonalData直接理解为一个接口。

Public Address As String
Public Tel As Integer

Public Property Get Name() As String

End Property

有关处理客户数据的代码位于 Customer 类模块:
Implements IPersonalData

Private Property Get IPersonalData_Address() As String
IPersonalData_Address = "CustomerAddress"
End Property

Private Property Get IPersonalData_Name() As String
IPersonalData_Name = "CustomerName"
End Property

Private Property Get IPersonalData_Tel() As Integer
IPersonalData_Tel = 12547
End Property
Private Property Let IPersonalData_Address(ByVal RHS As String)
'
End Property

Private Property Let IPersonalData_Name(ByVal RHS As String)
'
End Property

Private Property Let IPersonalData_Tel(ByVal RHS As Integer)
'
End Property


有关处理供应商数据的代码位于 Supplier 类模块:

Implements IPersonalData

Private Property Get IPersonalData_Address() As String
IPersonalData_Address = "SupplierAddress"
End Property

Private Property Get IPersonalData_Name() As String
IPersonalData_Name = "SupplierName"
End Property

Private Property Get IPersonalData_Tel() As Integer
IPersonalData_Tel = 12547
End Property
Private Property Let IPersonalData_Address(ByVal RHS As String)
'
End Property

Private Property Let IPersonalData_Name(ByVal RHS As String)
'
End Property

Private Property Let IPersonalData_Tel(ByVal RHS As Integer)
'
End Property

下面的代码负责处理 Selector 窗体:

Private cust As New Customer
Private sup As New Supplier

Private Sub Command1_Click()
Dim frm2 As New form2
    frm2.Show 1
End Sub

Private Sub Command2_Click()
Dim frm2 As New form2
    frm2.Show 1
End Sub

下面的代码负责处理 Data Entry 窗体:

Private m_pd As IPersonalData
Private Sub Form_Load()
Set m_pd = New Customer
    With m_pd
        Text1 = .Name
        Text2 = .Address
        Text3 = .Tel
    End With
End Sub


背景知识:

Property Get 语句示例
该示例使用 Property Get 语句,定义获取属性值的属性过程。该属性用一个字符串来标识画笔的当前颜色。

Dim CurrentColor As Integer
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

'用一个字符串返回画笔的当前颜色。
Property Get PenColor() As String
   Select Case CurrentColor
      Case RED
         PenColor = "Red"
      Case GREEN
         PenColor = "Green"
      Case BLUE
         PenColor = "Blue"
   End Select
End Property

'下面的代码通过调用 Property Get 过程
'来获取画笔的颜色。
ColorName = PenColor

Property Let 语句示例
该示例使用 Property Let 语句,定义给属性赋值的过程。该属性标识绘图盒的画笔颜色。

Dim CurrentColor As Integer
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

'设置绘图盒的画笔颜色属性。
'模块级变量 CurrentColor 设为
'用于绘图的颜色值。
Property Let PenColor(ColorName As String)
   Select Case ColorName   '检查颜色名称字符串。
      Case "Red"
         CurrentColor = RED   '设为 Red。
      Case "Green"
         CurrentColor = GREEN   '设为 Green。
      Case "Blue"
         CurrentColor = BLUE   '设为 Blue。
      Case Else
         CurrentColor = BLACK   '设为缺省值。
   End Select
End Property

'下面的代码通过调用 Property let 过程
'来设置绘图盒的 PenColor 属性。

PenColor = "Red"


 

转载于:https://www.cnblogs.com/GISAddictor/archive/2007/06/09/interface_and_class.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值