Een abstracte klasse is er een die alleen bedoeld is als basisklasse van andere klassen. 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 daarvan 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 #:
abstracte klasse MyCircle {abstract public int Area (); } Class MyArea: MyCircle {public override int Area () {keerzijde retourzijde]; .....}}1 2 3 4 5 6 7 8 9 10 11 | abstracte klasse MyCircle {abstract public int Area (); } Class MyArea: MyCircle {public override int Area () {keerzijde retourzijde]; . . . . . }} |
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 #:
met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van System.Text; naamruimte 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); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | systeem gebruiken. Collecties. Generiek; systeem gebruiken. Linq; systeem gebruiken. Tekst; naamruimte 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. Lees regel ( ) ; } public void showdata () {Console. WriteLine ("Mijn naam is:", naam); }}} |
Zoals in het bovenstaande voorbeeld wordt getoond, 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
- 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.
- Een klasse kan verschillende interfaces overnemen, maar slechts één abstracte klasse.
- Een abstracte klasse kan methoden bevatten met of met een definitie. Maar een interface kan alleen de handtekening van de methode bevatten.
- Een abstracte klasse kan geheel, gedeeltelijk of helemaal niet worden geïmplementeerd, maar een interface moet volledig worden geïmplementeerd, dat wil zeggen dat alle leden moeten worden gedefinieerd in de afleidende klasse.
- Een interface kan geen modifiers voor toegang bevatten, maar een abstracte klasse kan deze bevatten voor functies, eigenschappen of gebeurtenissen.