タイトル | : クラス内Private変数に外部(?)からアクセスできてしまう |
記事No | : 11308 |
投稿日 | : 2014/08/22(Fri) 14:38 |
投稿者 | : まさお |
まさお と申します。 宜しくお願い致します。 WinXP Pro SP3 VB2010 Express SP1 です。
クラス関数にて自己と同じ型の別インスタンスのPrivate変数に直接アクセスできますか?
具体的には下記コードにおいて※α s1 は Private なので ※βのように Me からしかアクセスできない、と理解しておりました。 しかし※γのように自己と同じ型なら別インスタンス内Private変数に直接アクセスできてしまいます。 ※δ 違う型なら当然ながらコンパイルエラーになります。 Me と other は別のインスタンスですから、Me という外部から other という別インスタンスのPrivate変数には直接アクセスできない、と思っていました。 VB6 では※γで「メソッドまたはデータメンバが見つかりません」コンパイルエラーになるのですが、本来『クラス』とは別インスタンスでも同じ型であればPrivate変数に直接アクセスできるものなのでしょうか?
自分が何かを誤解しているような気がしています。 ご教授戴きたくお願い致します。
Public Class Hoge Public s0 As String Private s1 As String '※α
Public Sub Foo_0() s0 = "xyz" s1 = "qwe" '※β End Sub Public Sub Foo_1() Dim other As New Hoge other.s0 = "123" other.s1 = "456" '※γ End Sub Public Sub Foo_2(ByVal other As Hoge) other.s0 = "abc" other.s1 = "def" '※γ End Sub Public Sub Foo_3() Dim other As New OtherType other.s0 = "123" 'other.s1 = "456" '※δ End Sub End Class Public Class OtherType Public s0 As String Private s1 As String End Class
以上、宜しくお願い致します。
|