Verschil tussen abstracte klasse en interface in C #

Abstracte klasse
Een abstracte klasse is er een die alleen bedoeld is om een ​​basisklasse van andere klassen te zijn. De 'abstracte' modifier wordt gebruikt om een ​​klassen abstract te maken. Een abstracte wijziging geeft aan dat er een ontbrekende implementatie is die moet worden geïmplementeerd in de klasse die hieruit is afgeleid. De abstracte klasse kan een abstract en niet-abstract lid hebben. Een abstracte klasse zou op zijn minst één abstracte methode moeten hebben, anders heeft het geen zin om die klasse als 'abstract' aan te duiden.

Voorbeeld van abstracte klasse in C #:

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

Zoals in het bovenstaande voorbeeld wordt getoond, wordt de abstracte methode 'Area' in de MyCircle-klasse overschreven in de afgeleide klasse MyArea.

Interface
Een interface bevat alleen de declaratie van leden, inclusief methoden, eigenschappen, gebeurtenissen of indexeerders. Het bevat niet de implementatie van deze leden. Een klasse of struct implementeert de interface, moet de definitie leveren van methoden die in de interface zijn gedeclareerd. Dat betekent dat een interface een standaardstructuur biedt die de afgeleide klasse moet volgen.

Voorbeeld van een interface in C #:

12345678910111213141516171819202122 using System.Collections.Generic; using System.Linq; using System.Text; namespace MyName public interface MyData void getdata (); void showdata (); public class NameData: MyData public double getdata () string name; Console.WriteLine ("Voer de naam in:"); name = Console.ReadLine (); public void showdata () Console.WriteLine ("Mijn naam is:", naam);

Zoals in het bovenstaande voorbeeld te zien is, heeft de interface MyData twee getaltaangiften getdata () en showdata (). De klasse NameData die deze interface implementeert, moet de definitie geven van methoden die zijn gedeclareerd in de MyData-interface.

Verschil tussen abstracte klasse en interface

  1. Een abstracte klasse kan zowel abstracte als niet-abstracte leden hebben. Maar in een interface zijn alle leden impliciet abstract en moeten ze worden opgeheven in de afgeleide klasse.
  2. Een klasse kan verschillende interfaces overnemen, maar slechts één abstracte klasse.
  3. Een abstracte klasse kan methoden bevatten met of met een definitie. Maar een interface kan alleen de handtekening van de methode bevatten.
  4. Een abstracte klasse kan geheel, gedeeltelijk of helemaal niet worden geïmplementeerd, maar een interface moet volledig worden geïmplementeerd, d.w.z. alle leden moeten in de afgeleide klasse worden gedefinieerd.
  5. Een interface kan geen toegangsmodifiers bevatten, maar een abstracte klasse kan deze hebben voor functies, eigenschappen of gebeurtenissen.
HET