Recomendado, 2024

La Elección Del Editor

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 #:

clase abstracta MyCircle {abstract public int Area (); } Clase MyArea: MyCircle {public override int Area () {return side * side; .....}}
1 2 3 4 5 6 7 8 9 10 11clase abstracta MyCircle {abstract public int Area (); } Clase 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 reemplaza 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 #:

utilizando System.Collections.Generic; utilizando System.Linq; utilizando System.Text; espacio de nombres 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); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22utilizando el sistema. Colecciones Genérico ; utilizando el sistema. Linq; utilizando el sistema. Texto espacio de nombres MyName {interfaz pública MyData {void getdata (); showdata vacío (); } clase pública NameData: MyData {public double getdata () {nombre de cadena; Consola . WriteLine ("Introduzca el nombre:"); nombre = consola. 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 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 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.
Top