C# Modificadores de acceso
Modificadores de acceso
A estas alturas, ya está bastante familiarizado con la palabra clave public que aparece en muchos de nuestros ejemplos:
public string color;
La palabra clave public es un modificador de acceso, que se utiliza para establecer el nivel de acceso/visibilidad de clases, campos, métodos y propiedades.
C# tiene los siguientes modificadores de acceso:
| Modificador | Descripción |
|---|---|
public |
El código es accesible para todas las clases |
private |
Solo se puede acceder al código dentro de la misma clase |
protected |
Se puede acceder al código dentro de la misma clase o en una clase heredada de esa clase. Aprenderá más sobre herencia en un capítulo posterior |
internal |
Solo se puede acceder al código dentro de su propio ensamblado, pero no desde otro ensamblado. Aprenderá más sobre esto en un capítulo posterior |
También hay dos combinaciones: protected internal y private protected.
Por ahora, centrémonos en los modificadores public y private.
Modificador privado
Si declaras un campo con un modificador de acceso private, solo se puede acceder a él dentro de la misma clase:
Ejemplo
class Car{private string model = "Mustang"; static void Main(string[] args){Car myObj = new Car(); Console.WriteLine(myObj.model);}}
La salida será:
MustangSi intentas acceder a él fuera de la clase, se producirá un error:
Ejemplo
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
La salida será:
'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used
Modificador público
Si declaras un campo con un modificador de acceso public, es accesible para todas las clases:
Ejemplo
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
La salida será:
Mustang¿Por qué modificar el acceso?
Para controlar la visibilidad de los miembros de la clase (el nivel de seguridad de cada clase individual y miembro de la clase).
Para lograr la "Encapsulación", que es el proceso de garantizar que los datos "sensibles" estén ocultos a los usuarios. Esto se hace declarando los campos como private. Aprenderá más sobre esto en el próximo capítulo.
Nota: De forma predeterminada, todos los miembros de una clase son private si no especifica un modificador de acceso:
Ejemplo
class Car
{
string model; // private
string year; // private
}