Una clase abstracta se ocupa del proceso de abstracción. Es un fenómeno en el que se ocultan los detalles de cualquier 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 usar un método abstracto. El propósito elemental de una clase abstracta es ofrecer una guía para todas las clases derivadas heredadas por ella.
La sintaxis para la clase abstracta:
Muestra de clase abstractaSe utiliza una palabra clave 'abstracta' para generar una clase abstracta. Mientras que en el caso de una función abstracta, no contiene a nadie solo declarado dentro de la clase. Se utiliza un método abstracto dentro de la derivada, o puede decir en todas las clases no abstractas utilizando una palabra clave 'anular'. Usando esta palabra clave, un método abstracto no está en el estado de la abstracción; se puede usar como una función regular. Una clase derivada que es el hijo de la clase abstracta puede anular los mismos métodos abstractos.
La sintaxis para un método abstracto:
Público abstracto void smp ();Estructura de una clase abstracta
Una clase abstracta se usa principalmente en el proceso de herencia. Las estructuras no pueden anular ninguna clase abstracta. Una clase abstracta no está a favor de múltiples herencias. Del mismo modo, una clase abstracta no puede declararse como una clase estática, ya que una clase estática no se puede derivar.
Ejemplo 1
Para implementar el concepto de una clase abstracta, hemos creado un programa de muestra. En el que utilizamos una muestra de clase con el resumen de la palabra clave. Dentro de la clase, se indica un método abstracto. La clase abstracta siempre tiene un método abstracto.
Public Abstract Class Sample ()Como solo definimos la funcionalidad de los métodos abstractos dentro de la clase abstracta, en lugar de explicar el funcionamiento de las funciones, solo el encabezado de la función se declara aquí.
No se puede acceder directamente a una clase abstracta porque no creamos un objeto de ella; Se dice que es una clase ficticia o una clase no activa hasta que se activa creando un objeto de la clase derivado de ella. Por lo tanto, conduciremos la clase Sample1 desde la muestra de clase abstracta base. Esta clase no es abstracta. La clase de muestra se hereda en la clase infantil muestra1. La forma de representar una clase inherente de la clase base es usar el nombre de la clase principal con un letrero de colon frente a la clase derivada. Aquí Sample1 es una clase derivada.
# Public Class Sample1: muestraCuando heredamos una clase de la clase abstracta, puede usar las características y los métodos presentes dentro de la clase abstracta. Por ejemplo, el método smp () se puede declarar en la clase Sample1, pero no con el nombre del resumen porque ya no es una clase abstracta. Está escrito con la palabra clave 'anular' para representar que se hereda de una clase abstracta. Se muestra una declaración simple dentro del programa.
# Anulación pública nula smp ()Del mismo modo, otra clase SUPERS2 se hereda de la muestra de clase. Y también usa el método de anulación SMP (). Para inicializar la clase abstracta, no crearemos un objeto para ello. Pero la instancia de la clase derivada o de la niña será instanciada. La clase abstracta se activa automáticamente y se puede acceder fácilmente creando el objeto.
# Muestra s;'s' es el objeto de la clase de muestra; se crea, pero no está instanciado.
# S = nueva muestra1 ()Esta creación dinámica instanciará la clase Sample1 mediante el uso de un 'nuevo' operador. Ahora accederemos a la función declarada dentro de la clase abstracta a través de este objeto.
Del mismo modo, se creará el mismo objeto para la clase Sample2. Y luego, llamaremos a la función desde la clase principal. Cuando instanciemos el objeto para la clase, lo usaremos para la llamada de función en el siguiente paso, lo que lo hace especificado inmediatamente para la función utilizada dentro de la clase.
Guardar el código; Lo ejecutaremos en el terminal de Ubuntu, usaremos el compilador MCS para compilar el código y mono para ejecutarlo.
Archivo de $ MCS.CSEn la ejecución, puede ver que se muestran ambos valores dentro de las funciones.
Ejemplo 2
Al usar una clase abstracta, ahora calcularemos el área. Entonces, se crea una clase abstracta para el área, en la que se definirá un método abstracto para el área.
Área de clase de clase abstractaSe heredará una clase de clase derivada de la clase base. Esto calculará el área utilizando el método abstracto dentro de él. Primero, se declara una variable para obtener el número del programa principal.
# Class Square: Área ClaseSe crea un constructor para asignar el valor enviado del programa principal. Entonces la función se anulará de la clase abstracta. Este método calculará el área del cuadrado multiplicando ambos lados.
Crear otra clase para declarar el programa principal. Aquí, se crea el objeto para la clase infantil y se instanciará, ya que necesitamos enviar el número al constructor de la clase cuadrada para crear el objeto.
# Cuadrado S = nuevo cuadrado (15);Al usar el mismo objeto, se llamará a la función.
s.Área ();La consola imprimirá el área calculada por la función.
Ejemplo 3
La clase abstracta no necesita contener todos los métodos abstractos. Pero también, los métodos no abstractos se pueden establecer en una clase abstracta. Hemos utilizado el siguiente ejemplo para elaborar este concepto. Crea una clase abstracta. Se crea una función simple y se encuentra en un estado completamente funcionado, ya que acepta los parámetros que se le envían desde 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í, ya que es una función abstracta.
# Public abstract int multiply (int num1, int num2)Después de la clase abstracta, crearemos una clase derivada que heredará la función abstracta de la multiplicación.
Clase derivada: abstractClassEsta función multiplicará ambos valores y luego devolverá la respuesta.
Ahora crearemos un programa principal para crear el objeto.
Derivado d = nuevo derivado ();Conclusión
Se crea una clase abstracta en C Sharp para ocultar la información definiendo solo el encabezado de la función. Esta clase abstracta no es funcional hasta que se deriva otra clase infantil. Una clase abstracta se usa en herencia; de lo contrario, la declaración de una clase abstracta es inútil. Debido a la herencia, accedemos a él creando e instanciando el objeto para la clase infantil. No es obligatorio que una clase abstracta deba tener todos los métodos abstractos dentro de él. Hemos explicado el trabajo y la declaración de una clase abstracta utilizando algunos ejemplos e implementándolos en Ubuntu.