Belangrijk verschil - Klasse versus interface
Object-Oriented Programming (OOP) is een veelvoorkomend paradigma in softwareontwikkeling. Het helpt om realistische scenario's naar het programmeren te brengen met behulp van klassen en objecten. Een klasse is een blauwdruk om een object te maken. De programmeur kan een klasse maken met eigenschappen en methoden. Een leerling en leraar zijn objecten. Het maken van een object staat bekend als instantiatie. OOP maakt ook gebruik van interfaces. Interfaces en klasse lijken misschien op elkaar, maar ze hebben een verschil. Dit artikel bespreekt het verschil tussen een klasse en een interface. Het belangrijkste verschil tussen een klasse en een interface is dat een klasse een referentietype is dat een blauwdruk is om een object te instantiëren, terwijl de interface een referentietype is dat niet kan worden gebruikt om een object te instantiëren.
Wat is klasse?
In OOP wordt alles als een object beschouwd. Het is niet mogelijk om een object te maken zonder een klasse. Een klasse is een blauwdruk om een object te maken. Bij het bouwen van een huis tekent de architect het plan. Het plan is vergelijkbaar met een klas. Het huis is vergelijkbaar met het object. De klasse is het plan om een object te bouwen. Een object is wat wordt gemaakt met behulp van de klasse.
De klasse bevat de eigenschappen en methoden. Een student kan eigenschappen hebben zoals naam, cijfer, indexnummer. Een student kan methoden hebben zoals lezen, lopen, studeren. Er wordt een klasse gemaakt met de benodigde eigenschappen en methoden.
De syntaxis voor het maken van een klasse in veel programmeertalen is als volgt. Het is gemaakt met het trefwoord class.
class class_name {
// eigenschappen
//methoden
}
Programmeertalen zoals C en Java volgen een vergelijkbare syntaxis om een object te maken met behulp van een klasse. Neem aan dat de klasnaam Student is.
Student s1=nieuwe student ();
Deze s1 is het object. Het sleutelwoord "new" wordt gebruikt om geheugen toe te wijzen aan de eigenschappen. Een klasse heeft ook een constructor om eigenschappen of variabelen te initialiseren.
Klasseleden zoals eigenschappen en methoden hebben toegangsmodifiers. Toegangsspecificaties beschrijven de toegankelijkheid en zichtbaarheid van die leden voor andere klassen. Leden van de klas kunnen toegangsspecificaties hebben, zoals openbaar, privé en beveiligd. Publieke leden zijn toegankelijk voor andere klassen. Privéleden zijn alleen toegankelijk voor de klas. Beschermde leden zijn toegankelijk binnen de klas en relevante subklassen.
Wat is interface?
Abstractie is een pijler van objectgeoriënteerd programmeren. Het is om de implementatiedetails te verbergen en de functionaliteit aan de gebruiker weer te geven. Abstractie wordt bereikt met behulp van abstracte klassen en interfaces. Een abstracte methode heeft geen implementatie. Een klasse die ten minste één abstracte methode bevat, wordt een abstracte klasse genoemd.
Als er twee abstracte klassen zijn, moeten de methoden die in die klassen zijn gedeclareerd, worden geïmplementeerd. Er wordt een nieuwe klasse gebruikt om die methoden te implementeren. Als beide klassen dezelfde methode hadden, zou dit een ambiguïteitsprobleem kunnen veroorzaken. Daarom hebben programmeertalen zoals Java en C een interface.
Interfaces bevatten alleen de declaratie van methoden. Er is geen uitvoeringsmethode. Ook kunnen interfaces niet worden gebruikt om objecten te maken. Ze worden gebruikt om meerdere overervingen te ondersteunen en om de code te beveiligen.
De syntaxis van Interface is als volgt. Interface gebruik het trefwoord "interface".
interface interfacenaam{
type methode1(parameter_list);
type methode2(parameter_list);
}
Volgens hierboven hebben interfaces alleen de verklaring. Er is geen definitie. Interfaces kunnen dus geen objecten instantiëren. Het geeft alleen een abstract beeld van wat de interface is. Methoden die in de interface zijn gedeclareerd, kunnen door een of meerdere klassen worden geïmplementeerd. Een klasse gebruikt het trefwoord "implementeren" om een interface te implementeren. Zie onderstaand voorbeeld geschreven met Java.
Figuur 01: Programmeren met interfaces
Volgens het bovenstaande programma zijn A en B interfaces. Interface A heeft een methodedeclaratie die de sum() is. Interface B heeft een methodedeclaratie sub(). Klasse C implementeert beide interfaces die A en B zijn. Daarom definieert klasse C zowel de methoden sum() als sub(). Nadat het object van het type C is gemaakt, is het mogelijk om beide methoden sum() en sub() aan te roepen.
Methoden die in de interface worden gedeclareerd, moeten altijd openbaar zijn omdat de implementatieklassen ze definiëren. Een interface kan ook van een andere interface erven.
Wat zijn de overeenkomsten tussen klasse en interface?
- Beide zijn referentietypes.
- Beide hebben betrekking op objectgeoriënteerd programmeren.
Wat is het verschil tussen klasse en interface?
Klasse vs Interface |
|
Een klasse is een referentietype dat een blauwdruk is om een object te maken. | Een interface is een referentietype dat niet kan worden geïnstantieerd. |
Objectinitiatie | |
Een klasse wordt gebruikt om een object te instantiëren. | Een interface kan niet worden geïnstantieerd omdat de methoden geen actie kunnen uitvoeren. |
Constructor | |
Een klasse bevat een constructor om de variabelen te initialiseren. | Een interface bevat geen constructor omdat het nauwelijks variabelen zijn om te initialiseren. |
Trefwoord | |
Een klas gebruikt het trefwoord "klasse". | Een interface gebruikt het trefwoord "interface". |
Toegangsspecificatie | |
Leden van de klas kunnen privé, openbaar en beschermd zijn. | Leden van de interface moeten altijd openbaar zijn omdat de implementerende klassen ze definiëren. |
Samenvatting – Klasse versus interface
Klassen en interfaces worden veel gebruikt in objectgeoriënteerd programmeren. Het verschil tussen een klasse en een interface is dat een klasse een referentietype is dat een blauwdruk is om een object te instantiëren en dat een interface een referentietype is dat niet kan worden gebruikt om een object te instantiëren. Een klasse kan veel interfaces implementeren. Maar het kan maar één superklasse uitbreiden. In interface kan veel interfaces erven, maar er kan geen implementatie zijn. Beide hebben hun belang. De programmeur kan ze gebruiken volgens de ontwikkeling van software.
Download de PDF-klasse versus interface
U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens de citatienota. Download hier de PDF-versie. Verschil tussen klasse en interface