Differenza tra classe astratta e interfaccia in C #

Classe astratta
Una classe astratta è una che è intesa solo per essere una classe base di altre classi. Il modificatore "astratto" viene utilizzato per creare un abstract di classe. Un modificatore astratto indica che c'è un'implementazione mancante che deve essere implementata nella classe derivata da esso. La classe astratta può avere membri astratti e non astratti. Una classe astratta dovrebbe avere almeno un metodo astratto, altrimenti non si usa dichiarare quella classe come "astratta".

Esempio di classe astratta in C #:

1234567891011 classe astratta MyCircle abstract public int Area (); Classe MyArea: MyCircle public override int Area () return side * side; .....

Come mostrato nell'esempio precedente, il metodo astratto 'Area' all'interno della classe MyCircle viene sovrascritto nella classe derivata MyArea.

Interfaccia
Un'interfaccia contiene solo la dichiarazione dei membri inclusi metodi, proprietà, eventi o indicizzatori. Non contiene l'implementazione di questi membri. Una classe o una struttura implementa l'interfaccia, deve fornire la definizione dei metodi dichiarati nell'interfaccia. Ciò significa che un'interfaccia fornisce una struttura standard che la classe derivata deve seguire.

Esempio di un'interfaccia in C #:

12345678910111213141516171819202122 using System.Collections.Generic; using System.Linq; using System.Text; namespace MyName interfaccia pubblica MyData void getdata (); void showdata (); public class NameData: MyData public double getdata () nome stringa; Console.WriteLine ("Immettere il nome:"); name = Console.ReadLine (); public void showdata () Console.WriteLine ("Il mio nome è:", name);

Come mostrato nell'esempio precedente, l'interfaccia MyData ha due dichiarazioni di metodo getdata () e showdata (). La classe NameData che sta implementando questa interfaccia dovrebbe fornire la definizione dei metodi dichiarati nell'interfaccia MyData.

Differenza tra classe astratta e interfaccia

  1. Una classe astratta può avere membri astratti e non astratti. Ma, in un'interfaccia, tutti i membri sono implicitamente astratti e devono essere sovrascritti nella classe derivata.
  2. Una classe può ereditare diverse interfacce ma solo una classe astratta.
  3. Una classe astratta può contenere metodi con o con una definizione. Ma un'interfaccia può contenere solo la firma del metodo.
  4. Una classe astratta può essere completamente, parzialmente o non implementata affatto, ma un'interfaccia dovrebbe essere pienamente implementata, cioè tutti i membri devono essere definiti nella classe derivante.
  5. Un'interfaccia non può contenere modificatori di accesso, ma una classe astratta può averla per funzioni, proprietà o eventi.
IT