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á:
Mustang
Si 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
}