Saltar al contenido

Conocer las visibilidades por defecto de las clases, las clases anidadas y los miembros

Las funciones de miembros se llaman así porque están definidas dentro del cuerpo de la clase. En consecuencia, tienen el mismo prototipo que otras variables definidas en una clase. Operarán en los objetos que pertenecen a su propia clase y tendrán acceso a todos los miembros de una clase para ese objeto específico.

Las Variables Miembro son esencialmente los atributos de un objeto dado. Son privadas para que se pueda implementar la encapsulación. En C#, la encapsulación es la capacidad de un objeto de ocultar su comportamiento y los datos asociados si no es necesario para el usuario. A través de esta propiedad, se puede considerar un conjunto de métodos y actuar como una sola unidad. Se puede acceder a ellos a través de las funciones de miembro público.

Conocer las visibilidades por defecto de las clases, las clases anidadas y los miembros
Conocer las visibilidades por defecto de las clases, las clases anidadas y los miembros

Para comprender el concepto de las funciones de los miembros y su alcance, veamos el siguiente ejemplo.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 usando el sistema;namespace MoneyApplication {classMoney{privatedouble income;privatedouble loan;privatedouble interest;public evita el ingreso(doble inc){ income = inc;}public evita el préstamo(doble lon){ loan = lon; }publicvoidsetInterest(double itr ){ interest = itr;}publicdoublegetExpense(){ return income * loan * interest;}}classMoneytester{staticvoidMain(string[] args){Money Money1 =newMoney();// Declare Money1 of type MoneyMoney Money2 =newMoney();double expense;// Declare Money2 of type Money// Money 1 specification Money1. setIngresos(60.0); Dinero1.setPréstamo(57.0); Dinero1.setIntereses(0.56);// Especificación Dinero 2 Dinero2.setIngresos(20.0); Dinero2.setPréstamo(24.0); Dinero2.setIntereses(0.09);// volumen de Dinero 1 gasto = Dinero1.getGasto(); Consola. WriteLine("Gasto de primera persona ( Dinero1) : {0}",gasto);// volumen de Dinero 2 gasto = Dinero2.getGasto(); Consola.WriteLine("Gasto de segunda persona ( Dinero2) : {0}", gasto); Consola.ReadKey();}}}

csharp

Constructores

Un constructor es un tipo especial de función de miembro de clase que se ejecuta para crear un nuevo objeto de esa clase. Implementa el comportamiento de esa clase en el objeto.

  • Siempre tendrá el mismo nombre que la clase.
  • No tiene ningún tipo de devolución.
  • Por defecto, un constructor no tiene parámetros. Pero si se desea, hay constructores parametrizados que asignan el valor inicial al objeto en el momento de la creación del mismo.

Destructores

Un destructor es también un tipo especial de función de miembro de una clase particular ejecutada cuando el objeto de su clase se sale de su alcance.

  • Tiene el mismo nombre que la clase con un prefijo tilde (~).
  • No devuelve un valor.
  • No toma ningún parámetro.
  • Es útil para liberar la memoria antes de que un programa termine.
  • No puede ser sobrecargado o heredado.

Objetos

Un objeto es la unidad más básica en OOPS y los lenguajes que implementan esta práctica. Una vez que un objeto es creado, interactúa invocando funciones. Se puede pensar en ellas como las entidades de la vida real en el mundo de la programación.

Instanciar una clase : Una clase se instancia creando un objeto. Una clase dada puede tener cualquier número de objetos.

Inicialización de un objeto : El nuevo operador asigna memoria para un nuevo objeto iniciando la clase y devuelve una referencia a ese lugar de memoria.

El compilador de C# puede diferenciar entre los constructores basándose en el número de argumentos y sus tipos.

Clases anidadas

En C#, una clase puede ser definida con la definición de otra clase. Estas se conocen como clases anidadas. Permiten al usuario agrupar clases que se utilizan para un propósito lógico o en conjunto. Esto mejora las propiedades de encapsulación y hace que el código sea más legible y manejable.

Por ejemplo:

1234567891011121314151617181920212223242526272829303132333435 usando el sistema;// Clase exteriorclase públicaOuterClass{/// Método de la clase exteriormétodovoideA(){ Consola.WriteLine("Método de la clase exterior llamado");}/// Clase interiorclase públicaInnerClass{/// Método de la clase interiormétodovoideB(){ Consola. WriteLine("Inner class Method called");}}// Driver ClasspublicclassProgram{// Principal methodstaticpublicvoidMain(){/// Crear la instancia de la clase externaOuterClass obj1 =nuevaOuterClass(); obj1. methodA();/* Esta sentencia da un error porque no se puede acceder a los métodos de la clase interna con los objetos de la clase externa. obj1. methodB(); */// Crear la instancia de la clase interna OuterClass.InnerClass obj2 =newOuterClass.InnerClass();// Acceder al método de la clase interna obj2.methodB();}}

csharp

La salida de este código es:

12Método de la clase externa llamadaClase interna Método llamado

Nota:

  • Una clase anidada puede ser declarada con cualquier modificador de acceso, a saber, privada, pública, protegida, interna, protegida interna o privada protegida.
  • Una clase externa no puede acceder directamente a los miembros de la clase interna, como se puede ver en el ejemplo anterior.
  • Es posible crear objetos de clase interna en la clase externa.
  • A una clase interna se le permite acceder a un miembro estático declarado en la clase externa. A continuación se muestra un método:12345678// Main Driver Class publicclassDriverClass{// Main method staticpublicvoidMain(){/// Para acceder al método estáticoA de la clase interna OuterClass1.InnerClass2.methodA();}}csharp

Algunas cosas a tener en cuenta con respecto a las clases anidadas:

  • La clase interna puede acceder a cualquier miembro no estático que haya sido declarado en la clase externa.
  • El alcance de una clase anidada está limitado por el alcance de su clase envolvente (exterior).
  • Si no se especifica nada, la clase anidada es privada (por defecto).
  • Cualquier clase puede ser heredada en otra clase en C# (incluyendo una clase anidada).
  • El usuario puede heredar una clase anidada de la clase exterior.