C# Encapsulación
EncapsulaciónSe define como "encerrar uno o más elementos en un paquete físico o lógico". En la metodología de la programación orientada a objetos, la encapsulación sirve para evitar el acceso a los detalles de implementación.
La abstracción y la encapsulación son características relacionadas de la programación orientada a objetos. La abstracción permite visualizar la información relevante, mientras que la encapsulación permite al desarrolladorimplementar el nivel de abstracción requerido。
La encapsulación en C# establece los permisos de acceso de los usuarios según las necesidades específicas, y mediantemodificadores de accesopara implementarlo.
Unmodificador de accesodefine el ámbito y la visibilidad de un miembro de clase. Los modificadores de acceso compatibles con C# son los siguientes:
- public: todos los objetos pueden acceder;
- private: el propio objeto puede acceder dentro del objeto;
- protected: solo los objetos de esa clase y de sus subclases pueden acceder;
- internal: los objetos del mismo ensamblado pueden acceder;
- protected internal: el acceso se limita al ensamblado actual o a los tipos derivados de la clase contenedora.

Modificador de acceso Public
El modificador de acceso Public permite que una clase exponga sus variables miembro y funciones miembro a otras funciones y objetos. Cualquier miembro público puede ser accedido por clases externas.
El siguiente ejemplo ilustra esto:
Ejemplo
namespace RectangleApplication
{
class Rectangle
{
//Variable miembro
public double length;
public double width;
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Longitud: {0}", length);
Console.WriteLine("Ancho: {0}", width);
Console.WriteLine("Área: {0}", GetArea());
}
}// Fin de Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
长度: 4.5 宽度: 3.5 面积: 15.75
En el ejemplo anterior, las variables miembro length y width se declaran comopublic, por lo que la función Main() puede, usando la instancia de la clase Rectangle,racceder a ellas.
La función miembroDisplay()yGetArea()Puede acceder directamente a estas variables.
La función miembroDisplay()también se declara comopublic, por lo que también puede serMain()usando la instancia de la clase Rectangleraccedida.
Modificador de acceso Private
El modificador de acceso Private permite que una clase oculte sus variables miembro y funciones miembro a otras funciones y objetos. Solo las funciones de la misma clase pueden acceder a sus miembros privados. Ni siquiera una instancia de la clase puede acceder a sus miembros privados.
El siguiente ejemplo ilustra esto:
Ejemplo
namespace RectangleApplication
{
class Rectangle
{
// Variable miembro privada
private double length;
private double width;
// Método público para obtener el largo y el ancho del rectángulo a partir de la entrada del usuario
public void AcceptDetails()
{
Console.WriteLine("Ingrese la longitud:");
length = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese el ancho:");
width = Convert.ToDouble(Console.ReadLine());
}
// Método público para calcular el área del rectángulo
public double GetArea()
{
return length * width;
}
// Método público para mostrar las propiedades y el área del rectángulo
public void Display()
{
Console.WriteLine("Longitud: {0}", length);
Console.WriteLine("Ancho: {0}", width);
Console.WriteLine("Área: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
// Crear una instancia de la clase Rectangle
Rectangle r = new Rectangle();
// Obtener la longitud y el ancho del rectángulo a partir de la entrada del usuario mediante el método público AcceptDetails()
r.AcceptDetails();
// Mostrar las propiedades y el área del rectángulo mediante el método público Display()
r.Display();
Console.ReadLine();
}
}
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
请输入长度: 5 请输入宽度: 3 长度: 5 宽度: 3 面积: 15
Explicación:
lengthywidthSe declaran como variables miembro privadas para evitar que se acceda y modifique directamente desde fuera de la clase.AcceptDetailsEl método permite al usuario ingresar el largo y el ancho del rectángulo; esto es un ejemplo de manipulación de variables privadas mediante métodos públicos.GetAreaEl método se utiliza para calcular el área del rectángulo, yDisplayel método se utiliza para mostrar las propiedades y el área del rectángulo.En
ExecuteRectangleEn la clase, mediante la creación deRectangleuna instancia de la clase, y luego llamando a sus métodos públicos, se realizan las operaciones. De esta manera, el programa principal no puede acceder ni modificar directamente el largo y el ancho del rectángulo, sino que opera a través de la interfaz pública proporcionada por la clase, logrando así la encapsulación.
Modificador de acceso Protected
El modificador de acceso Protected permite que las subclases accedan a las variables miembro y funciones miembro de su clase base. Esto ayuda a implementar la herencia. Discutiremos esto en detalle en el capítulo de herencia. Discutiremos esto con más detalle.
Modificador de acceso Internal
El modificador de acceso Internal permite que una clase exponga sus variables miembro y funciones miembro a otras funciones y objetos del programa actual. En otras palabras, cualquier miembro con el modificador de acceso internal puede ser accedido por cualquier clase o método definido dentro de la aplicación donde se define el miembro.
El siguiente ejemplo ilustra esto:
Ejemplo
namespace RectangleApplication
{
class Rectangle
{
//Variable miembro
internal double length;
internal double width;
double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Longitud: {0}", length);
Console.WriteLine("Ancho: {0}", width);
Console.WriteLine("Área: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
长度: 4.5 宽度: 3.5 面积: 15.75
En el ejemplo anterior, observe que la función miembroGetArea()se declara sin ningún modificador de acceso. Si no se especifica un modificador de acceso, se utiliza el modificador de acceso predeterminado del miembro de clase, que esprivate。
Modificador de acceso Protected Internal
El modificador de acceso Protected Internal permite el acceso dentro de la misma clase, clases derivadas o el ensamblado que contiene la clase. También se utiliza para implementar la herencia.
Otras extensiones