Acceda a la variable miembro privado de la clase utilizando su objeto (instancia)
-
19-08-2019 - |
Pregunta
Aquí hay un fragmento de código VB.NET
Public Class OOPDemo
Private _strtString as String
Public Function Func(obj as OOPDemo) as boolean
obj._strString = "I can set value to private member using a object"
End Function
End Class
Pensé que no podíamos acceder a los miembros privados usando el objeto, pero quizás CLR nos permite hacerlo. Eso significa que los modificadores de acceso se basan en el tipo y no en la instancia de ese tipo. También he oído que c ++ también permite eso ...
¿Alguna idea de cuál podría ser la razón de esto?
Editar:
Creo que esta línea del enlace msdn dada por RoBorg explica este comportamiento " El código del tipo que declara un elemento privado, incluido el código dentro de los tipos contenidos, puede acceder al elemento "
Solución
Tu pregunta es bastante confusa pero creo que la he entendido como: " ¿Por qué puedo acceder a las variables privadas de otra instancia (de mi clase)? "
Y tiene razón: en todos los lenguajes OOP que he usado, puede acceder a variables privadas desde otras instancias, precisamente porque los permisos de acceso se basan en dónde está el código, en lugar de a qué instancia de objeto 'pertenece'.
De lo contrario, podría ser difícil implementar constructores de copia u operadores de igualdad.
Otros consejos
Aquí está la sección sobre niveles de acceso en MSDN .