Class en Interface worden beide gebruikt om nieuwe referentietypen te creëren. Een klasse is een verzameling velden en methoden die op velden werken. Een interface heeft volledig abstracte methoden, d.w.z. methoden met niemand. Een interface is syntactisch vergelijkbaar met de klasse, maar er is een groot verschil tussen klasse en interface dat is een klasse kan worden geïnstantieerd, maar een interface kan nooit worden geïnstantieerd.
Dus laten we leren wat meer verschil tussen een klasse en een interface met de hulp van een vergelijking grafiek hieronder weergegeven.
Content: Class Vs Interface
- Vergelijkingsdiagram
- Definitie
- Key Differences
- Conclusie
Vergelijkingsdiagram
Basis voor vergelijking | Klasse | Interface |
---|---|---|
Basic | Een klasse wordt geïnstantieerd om objecten te maken. | Een interface kan nooit worden geïnstantieerd, omdat de methoden bij aanroep geen actie kunnen uitvoeren. |
Keyword | class | interface |
Access specifier | De leden van een klasse kunnen privaat, publiek of beschermd zijn. | De leden van een interface zijn altijd publiek. |
Methods | De methodes van een klasse zijn gedefinieerd om een specifieke actie uit te voeren. | De methodes in een interface zijn zuiver abstract. |
Implementeren/uitbreiden | Een klasse kan een willekeurig aantal interfaces implementeren en kan slechts één klasse uitbreiden. | Een interface kan meerdere interfaces uitbreiden, maar kan geen enkele interface implementeren. |
Constructor | Een klasse kan constructors hebben om de variabelen te initialiseren. | Een interface kan nooit een constructor hebben omdat er nauwelijks variabelen te initialiseren zijn. |
Definitie van klasse
Een klasse is een zeer belangrijk aspect van Java programmeren zonder klassen kun je geen java programma implementeren. Een klasse creëert referentietypes en deze referentietypes worden gebruikt om objecten te creëren. Een klasse heeft een handtekening en een body. De signatuur van een klasse bevat de naam van de klasse en informatie die aangeeft of de klasse een andere klasse heeft geërfd. De body van een klasse bevat velden en methodes die op die velden werken. Een klasse wordt aangemaakt met het sleutelwoord class. Laten we eens kijken hoe we een klasse kunnen declareren.
class class_name{/*fields...methods*/}
Wanneer een klasse wordt geïnstantieerd, bevat elk aangemaakt object een kopie van de velden en methoden. De velden en leden die in een klasse worden gedeclareerd, kunnen statisch of niet-statisch zijn. De waarde van statische leden is constant voor elk object, terwijl de niet-statische leden door elk object anders worden geïnitialiseerd, afhankelijk van de vereisten.
De leden van een klasse hebben toegangsspecificaties die de zichtbaarheid en toegankelijkheid van de leden voor de gebruiker of voor de subklassen bepalen. De toegangsspecificaties zijn public, private en protected. Een klasse kan door een andere klasse worden geërfd met behulp van de toegangsspecificator die de zichtbaarheid van de leden van een superklasse (geërfde klasse) in een onderklasse (ervende klasse) zal bepalen. Aldus vervult een klasse het concept van data hiding en encapsulation in Object Oriented programming.
Definitie van Interface
Een interface behoort ook tot de in Java gedefinieerde referentietypen. Het belang van een interface is dat in Java een klasse slechts één enkele klasse kan erven. Om deze beperking te omzeilen hebben de ontwerpers van Java het begrip interface geïntroduceerd. Een interface is syntactisch gelijk aan een klasse, maar het ontbreekt aan velddeclaratie en de methoden binnen een interface hebben geen implementatie. Een interface wordt gedeclareerd met het sleutelwoord interface. Laten we de declaratie van een interface eens bekijken.
interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}
Een interface definieert geen enkele methode die erin wordt gedeclareerd, omdat er geen velden zijn om op te werken. Alleen omdat een methode in een interface geen enkele actie uitvoert, kan een interface nooit worden geïnstantieerd. Als een interface een lid van een veld heeft, moet het geïnitialiseerd worden op het moment van hun declaratie. Een interface bevat nooit constructors omdat er geen veldleden zijn die geïnitialiseerd kunnen worden. Dus, een interface definieert alleen wat een klasse moet doen in plaats van hoe het moet doen.
Een interface eenmaal gemaakt kan worden geïmplementeerd door een willekeurig aantal klassen met behulp van een keyword implements. Maar de klassen die een interface implementeren moeten alle methoden in een interface definiëren. Een interface kan ook een andere interface overerven met behulp van het extend keyword. Als een klasse een interface implementeert die een andere interface uitbreidt. Dan moet een klasse de methodes definiëren van beide interfaces die in een keten voorkomen. De methoden in een interface moeten altijd public zijn, omdat ze toegankelijk moeten zijn voor de klassen die ze implementeren.
Key verschillen tussen Class en Interface in Java
- Een class kan worden geïnstantieerd door zijn objecten te creëren. Een interface wordt nooit geïnstantieerd omdat de methoden die in een interface worden verklaard abstract zijn en geen actie uitvoeren, zodat het geen zin heeft een interface te instantiëren.
- Een klasse wordt verklaard met behulp van een sleutelwoord klasse. Op dezelfde manier wordt een interface gecreëerd met behulp van een sleutelwoord interface.
- De leden van een klasse kunnen de toegangsspecificatie hebben zoals public, private, protected. Maar de leden van een interface zijn altijd openbaar, omdat zij moeten worden benaderd door de klassen die hen implementeren.
- De methoden in een klasse worden gedefinieerd om een actie uit te voeren op de velden die in de klasse worden gedeclareerd. Aangezien in een interface de velden niet worden gedeclareerd, zijn de methoden in een interface zuiver abstract.
- Een klasse kan een willekeurig aantal interfaces implementeren, maar kan slechts één superklasse uitbreiden. Een interface kan een willekeurig aantal interfaces uitbreiden, maar kan geen enkele interface implementeren.
- Een klasse heeft constructors in zich die zijn gedefinieerd om de variabele te initialiseren. Maar een interface heeft geen constructors, omdat er geen velden zijn die geïnitialiseerd moeten worden. De velden van een interface worden alleen bij hun declaratie geïnitialiseerd.
Conclusie
Zowel klassen als interfaces hebben hun eigen belang. Een klasse wordt gebruikt wanneer we moeten definiëren hoe de taak zou worden uitgevoerd. Een interface wordt gebruikt wanneer we moeten weten welke taak moet worden uitgevoerd.