Rekommenderas, 2024

Redaktionen

Skillnad mellan abstraktklass och gränssnitt i C #

Abstrakt klass
En abstrakt klass är en som endast är avsedd att vara en grundklass i andra klasser. Den "abstrakta" modifieraren används för att göra en klass abstrakt. En abstrakt modifier indikerar att det finns en saknad implementering som behöver genomföras i den klass som härrör från den. Den abstrakta klassen kan ha abstrakta och icke-abstrakta medlemmar. En abstrakt klass bör ha minst en abstrakt metod, annars är det inte användbar att förklara den klassen som "abstrakt".

Exempel på abstrakt klass i C #:

abstrakt klass MyCircle {abstrakt public int Area (); } Klass MyArea: MyCircle {public override int Område () {retur sida * sida; .....}}
1 2 3 4 5 6 7 8 9 10 11abstrakt klass MyCircle {abstrakt public int Area (); } Klass MyArea: MyCircle {public override int Område () {retur sida * sida; . . . . . }}

Som det framgår av ovanstående exempel överträffas den abstrakta metoden "Area" inom MyCircle-klassen i den härledda klassen MyArea.

Gränssnitt
Ett gränssnitt innehåller endast deklarationen av medlemmar inklusive metoder, egenskaper, händelser eller indexers. Det innehåller inte genomförandet av dessa medlemmar. En klass eller struktur implementerar gränssnittet, måste ge definitionen av metoder som deklareras i gränssnittet. Det betyder att ett gränssnitt ger en standardstruktur som den härledda klassen behöver följa.

Exempel på ett gränssnitt i C #:

använder System.Collections.Generic; använder System.Linq; använder System.Text; namespace MyName {public interface MyData {void getdata (); tomgångsdata (); } public class NameData: MyData {public double getdata () {strängnamn; Console.WriteLine ("Skriv in namnet:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Mitt namn är:", namn); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22använder system. Samlingar. Generisk ; använder system. Linq; använder system. Text; namespace MyName {public interface MyData {void getdata (); tomgångsdata (); } public class NameData: MyData {public double getdata () {strängnamn; Konsol. WriteLine ("Skriv in namnet:"); namn = konsol. ReadLine (); } public void showdata () {Console. WriteLine ("Mitt namn är:", namn); }}}

Som visas i ovanstående exempel har gränssnittet MyData två metoddeklaration getdata () och showdata (). Klassen NameData som implementerar detta gränssnitt bör ge definitionen av metoder som deklareras i MyData-gränssnittet.

Skillnad mellan abstraktklass och gränssnitt

  1. En abstrakt klass kan ha abstrakta såväl som icke abstrakta medlemmar. Men, i ett gränssnitt, är alla medlemmar implicit abstrakta och måste överskridas i den härledda klassen.
  2. En klass får ärva flera gränssnitt men bara en abstrakt klass.
  3. En abstrakt klass kan innehålla metoder med eller med en definition. Men ett gränssnitt kan bara innehålla metod signatur.
  4. En abstrakt klass kan helt eller delvis inte implementeras, men ett gränssnitt ska vara fullt implementerat, dvs alla medlemmar måste definieras i härledande klassen.
  5. Ett gränssnitt kan inte innehålla åtkomstmodifierare, men en abstrakt klass kan ha den för funktioner, egenskaper eller händelser.
Top