在一般情况下,根据面向对象的范例,我封装的理解基本上是说:有没有办法让一个值只能访问嵌套类VB.NET的父类?
- 如果成员是私有的,它只能通过类访问。
- 如果一个成员受到保护,它只能被基类和任何派生类访问。
- 如果一个成员是公开的,任何人都可以访问它。
如果我有一个嵌套类,我可以声明一个属性只能访问该类以及它嵌套在其中的父类吗?例如:
Public Class ContainerClass
Public Class NestedClass
Protected myInt As Integer ' <- this is what I am wondering about '
Protected myDbl As Double ' <- this is what I am wondering about '
Sub New()
myInt = 1
myDbl = 1.0
End Sub
End Class
Private myNestedObject As New NestedClass
' this function is illegal '
Public Sub GrowNestedObject(ByVal multiplier As Integer)
myNestedObject.myInt *= multiplier
myNestedObject.myDbl *= multiplier
End Sub
End Class
在例子中,我不能直接从ContainerClass的实例访问myNestedObject.myInt或myNestedObject.myDbl如果这些成员是私有或保护。但是假设我不想让它们成为Public,因为它们暴露在外:它们可以从任何地方进行更改,而不仅仅是在ContainerClass对象内进行更改。宣布他们朋友仍然太弱,以至于他们会在应用程序中的任何地方被更改。
有什么方法可以完成我在这里的目标?如果没有,任何人都可以想出一个更明智的方式来实现这样的事情?
这个建议听起来对我很有前途。我会尝试一下。 – 2009-06-24 18:53:09