Duplicar posibles:
Why are private fields private to the type, not the instance?¿Por qué es posible llamar a un método/variable de CSharp protegido o privado?
Considérese la clase siguiente:
public class Test
{
protected string name;
private DateTime dateTime;
public Test(string name)
{
this.name = name;
this.dateTime = DateTime.Now;
}
public Test(Test otherObject)
{
this.name = otherObject.name;
this.dateTime = otherObject.GetDateTime();
}
private DateTime GetDateTime()
{
return dateTime;
}
public override string ToString()
{
return name + ":" + dateTime.Ticks.ToString();
}
}
En mi constructor que estoy llamando privada o protegida cosas de la otherObject
. ¿Por qué es esto posible? Siempre pensé que lo privado era realmente privado (lo que implicaba que solo el objeto podía llamar a ese método/variable) o protegido (solo accesible por sobrecargas).
¿Por qué y cuándo tendría que usar una característica como esta?
¿Hay alguna lógica OO/principio que me falta?
¿Por qué obtuvieron un voto negativo? Parece una buena pregunta con un buen ejemplo de código (que admitiré que no he probado, pero supongo que hace lo que se afirma? – Chris
también http://stackoverflow.com/questions/4244818/why-can-private-member- variable-be-changed-by-class-instance – AakashM
y http://stackoverflow.com/questions/2090285/c-private-members-visibility – AakashM