Clase C# abstracta

Una clase abstracta se ocupa del proceso de abstracción. Es un fenómeno donde se ocultan los detalles de cada método y solo se muestra la funcionalidad. No es una implementación completa. No podemos instanciar una clase abstracta directamente; se puede crear sin utilizar un método abstracto. El propósito básico de una clase abstracta es proporcionar una guía para todas las clases derivadas que heredan de ella. La sintaxis de la clase abstracta: se utiliza una palabra clave abstracta para generar una clase abstracta. Mientras que en el caso de una función abstracta, ninguna se declara solo dentro de la clase. Se usa un método abstracto dentro de los derivados, o puede decir en todas las clases no abstractas usando una palabra clave «anular». Con esta palabra clave, un método abstracto no está en estado de abstracción; se puede utilizar como una función regular. Una clase derivada que es hija de la clase abstracta puede invalidar los mismos métodos abstractos. La sintaxis para un método abstracto: Public abstract void smp() ;

Estructura de una clase abstracta

Una clase abstracta se usa principalmente en el proceso de herencia. Las estructuras no pueden anular una clase abstracta. Una clase abstracta no es para herencia múltiple. Asimismo, una clase abstracta no se puede declarar como una clase estática, ya que no se puede derivar una clase estática.

Ejemplo 1

Para implementar el concepto de una clase abstracta, creamos un programa de muestra. En el que usamos un ejemplo de clase con la palabra clave abstracta. Se especifica un método abstracto dentro de la clase. La clase abstracta siempre tiene un método abstracto. Patrón de clase abstracto público () {Smp de vacío abstracto público](); Dado que solo estamos definiendo la funcionalidad de los métodos abstractos dentro de la clase abstracta en lugar de explicar cómo funcionan las funciones, aquí solo se declara el encabezado de la función.

No se puede acceder directamente a una clase abstracta porque no estamos creando un objeto a partir de ella; Se la denomina clase ficticia o clase inactiva hasta que se vuelve activa mediante la creación de un objeto de su clase derivada. Entonces controlaremos la clase sample1 desde la muestra de la clase base abstracta. Esta clase no es abstracta. La clase Pattern es heredada por la clase secundaria Pattern1. La forma de representar una clase inherente a partir de la clase base es utilizar el nombre de la clase principal con dos puntos delante de la clase derivada. Aquí sample1 es una clase derivada. # Muestra de clase pública1: muestra Cuando heredamos una clase de la clase abstracta, puede usar las funciones y métodos que existen dentro de la clase abstracta. Por ejemplo, el método smp() se puede declarar en la clase sample1, pero no con el nombre abstracto porque ya no es una clase abstracta. Se escribe con la palabra clave «anular» para indicar que se hereda de una clase abstracta. Una instrucción simple se muestra dentro del programa. # Public override void smp() De manera similar, otra clase sample2 se hereda de la clase sample. Y también usa el método de anulación smp(). Para inicializar la clase abstracta, no creamos un objeto para ella. Pero se instancia la instancia de la derivada o subclase. La clase abstracta se activa automáticamente y se puede invocar simplemente creando el objeto. ‘s’ es el objeto de la clase de ejemplo; se crea pero no se instancia. Esta creación dinámica instanciará la clase sample1 utilizando un operador «nuevo». Ahora accederemos a la función declarada en la clase abstracta a través de este objeto.

De manera similar, se crea el mismo objeto para la clase sample2. Y luego llamamos a la función de la clase padre. Cuando creamos una instancia del objeto para la clase, lo usamos para la llamada de función en el siguiente paso, que lo especifica inmediatamente para la función utilizada dentro de la clase. guardar el código; Lo ejecutamos en la terminal de Ubuntu, usamos el compilador MCS para compilar el código y mono para ejecutarlo. $ MCS archivo.cs$ Mono archivo.exe

Cuando se ejecuta, puede ver que ambos valores se muestran dentro de las funciones.

ejemplo 2

Usando una clase abstracta, ahora calculamos el área. Entonces se crea una clase abstracta para el alcance, en la que se define un método abstracto para el alcance. Clase abstracta AreaClass {Abstract public int Area();} Un cuadrado de clase derivado se hereda de la clase base. Esto calcula el área usando el método abstracto que contiene. Primero se declara una variable para obtener el número del programa principal. # Cuadrado de Clase: AreaClass

Se crea un constructor para asignar el valor enviado desde el programa principal. Entonces la función es anulada por la clase abstracta. Este método calcula el área del cuadrado multiplicando ambos lados. Cree otra clase para declarar el programa principal. Aquí es donde se crea y se instancia el objeto para la clase secundaria, ya que necesitamos enviar el número al constructor de la clase cuadrada para crear el objeto. # cuadrado s = nuevo cuadrado (15); Usar el mismo objeto llama a la función.


La consola imprime el área calculada por la función.

Ejemplo 3

La clase abstracta no tiene que contener todos los métodos abstractos. Sin embargo, los métodos no abstractos también se pueden especificar en una clase abstracta. Usamos el siguiente ejemplo para explicar este concepto. Crea una clase abstracta. Se crea una función simple y está en pleno funcionamiento porque acepta los parámetros enviados por la llamada de función y devuelve la suma de ambos números. # Public int sum (int num1, int num2) Después de la declaración de la función regular, se define un método abstracto, pero su cuerpo no se declara aquí porque es una función abstracta. # Multiplica public abstract int (int num1, int num2)

Después de la clase abstracta, creamos una clase derivada que hereda la función abstracta de multiplicación. Clase derivada: AbstractClass {Public anular int multiplicar (int num1, int num2) Esta función multiplica ambos valores y luego devuelve el resultado.

Ahora crearemos un programa principal para crear el objeto. Derivado d = new Derivado();d.suma(20, 8);d.multiplicar (20, 8);

Conclusión

Se crea una clase abstracta en cis para ocultar la información definiendo solo el encabezado de la función. Esta clase abstracta no funciona hasta que se deriva otra subclase de ella. La herencia usa una clase abstracta; De lo contrario, declarar una clase abstracta es inútil. Debido a la herencia, accedemos a él creando e instanciando el objeto para la clase secundaria. No es obligatorio que una clase abstracta deba contener todos los métodos abstractos. Hemos explicado cómo funciona una clase abstracta y cómo se declara utilizando algunos ejemplos y cómo se implementa en Ubuntu.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.