Raccomandato, 2024

Scelta Del Redattore

Differenza tra classe astratta e interfaccia in C #

Classe astratta
Una classe astratta è una classe destinata solo a essere una classe base di altre classi. Il modificatore "abstract" 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 #:

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

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); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22usando il sistema. Collezioni Generico; usando il sistema. Linq; usando il sistema. Testo ; namespace MyName {interfaccia pubblica MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {nome stringa; Console WriteLine ("Inserisci il nome:"); nome = Console. Linea di lettura ( ) ; } public void showdata () {Console. WriteLine ("Il mio nome è:", nome); }}}

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.
Top