Diferencia entre la clase abstracta y la interfaz en C#

Diferencia entre la clase abstracta y la interfaz en C#

Clase abstracta

Una clase abstracta es aquella que solo tiene la intención de ser una clase base de otras clases. El modificador 'abstracto' se usa para hacer un resumen de clase. Un modificador abstracto indica que hay alguna implementación faltante que debe implementarse en la clase derivada de ella. La clase abstracta puede tener miembros abstractos y no abstractos. Una clase abstracta debe tener al menos un método abstracto, de lo contrario, no se sirve para declarar esa clase como 'abstracto.'

Ejemplo de clase abstracta en C#:
Como se muestra en el ejemplo anterior, el método abstracto 'área' dentro de la clase Micircle se anula en la clase derivada Myarea.

Interfaz

Una interfaz contiene solo la declaración de miembros, incluidos métodos, propiedades, eventos o indexadores. No contiene la implementación de estos miembros. Una clase o estructura implementa la interfaz debe proporcionar la definición de métodos declarados en la interfaz. Eso significa que una interfaz proporciona una estructura estándar que la clase derivada debe seguir.

Ejemplo de una interfaz en C#:
Como se muestra en el ejemplo anterior, la interfaz MyData tiene dos Declaración del método getData () y showData (). La clase Namedata que está implementando esta interfaz debe dar la definición de métodos declarados en la interfaz MyData.

Diferencia entre la clase abstracta y la interfaz

  1. Una clase abstracta puede tener miembros abstractos y sin abstracto. Pero, en una interfaz, todos los miembros son implícitamente abstractos y deben ser anulados en la clase derivada.
  2. Una clase puede heredar varias interfaces pero solo una clase abstracta.
  3. Una clase abstracta puede contener métodos con o con una definición. Pero, una interfaz solo puede contener firma de método.
  4. Una clase abstracta puede implementarse total, parcialmente o no, pero una interfaz debe implementarse completamente, I.mi., Todos los miembros deben definirse en la clase derivada.
  5. Una interfaz no puede contener modificadores de acceso, pero una clase abstracta puede tenerla para funciones, propiedades o eventos.