Diferencia entre la clase abstracta y la interfaz en C #

Clase abstracta
Una clase abstracta es aquella que solo pretende ser una clase base de otras clases. El modificador 'abstracto' se usa para hacer una clase abstracta. Un modificador abstracto indica que falta alguna implementación que deba 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 utiliza declarar esa clase como "abstracta".

Ejemplo de clase abstracta en C #:

1234567891011 clase abstracta MyCircle abstract public int Area (); Class MyArea: MyCircle public override int Area () return side * side; .....

Como se muestra en el ejemplo anterior, el método abstracto 'Área' dentro de la clase MyCircle se invalida en la clase derivada MyArea.

Interfaz
Una interfaz contiene solo la declaración de los miembros, incluidos los métodos, propiedades, eventos o indizadores. No contiene la implementación de estos miembros. Una clase o estructura implementa la interfaz, debe proporcionar la definición de los 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 #:

12345678910111213141516171819202122 usando System.Collections.Generic; usando System.Linq; usando System.Text; namespace MyName interfaz pública MyData void getdata (); showdata vacío (); clase pública NameData: MyData public double getdata () nombre de cadena; Console.WriteLine ("Ingrese el nombre:"); name = Console.ReadLine (); public void showdata () Console.WriteLine ("Mi nombre es:", nombre);

Como se muestra en el ejemplo anterior, la interfaz MyData tiene dos métodos: declaración getdata () y showdata (). La clase NameData que está implementando esta interfaz debe dar la definición de los métodos declarados en la interfaz MyData.

Diferencia entre la clase abstracta y la interfaz

  1. Una clase abstracta puede tener miembros abstractos y no abstractos. Pero, en una interfaz, todos los miembros son implícitamente abstractos y deben anularse 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 la firma del método..
  4. Una clase abstracta puede implementarse total o parcialmente, pero la interfaz debe implementarse completamente, es decir, 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.
ESO