Belangrijk verschil - Overerving versus interface in Java
Java is een programmeertaal ontwikkeld door Sun Microsystems. Java kan worden gebruikt om verschillende applicaties te ontwikkelen. Het is een taal met meerdere paradigma's die objectgeoriënteerd, gestructureerd enz. ondersteunt. Het belangrijkste voordeel van Java is dat het Object-Oriented Programming (OOP) ondersteunt. De programmeur kan klassen en objecten maken. Er zijn vier pijlers in OOP. Ze zijn overerving, polymorfisme, abstractie en inkapseling. Overerving en interfaces zijn gerelateerd aan OOP. Het belangrijkste verschil tussen overerving en interface is dat overerving is om nieuwe klassen af te leiden van bestaande klassen en een interface is om abstracte klassen en meervoudige overerving te implementeren.
Wat is overerving in Java?
Overerving kan codeherbruikbaarheid bereiken. Overerving helpt om de attributen en methoden van een bestaande klasse opnieuw te gebruiken. Het mechanisme van het afleiden van een nieuwe klasse met behulp van de oude klasse wordt overerving genoemd. De oude klasse staat bekend als ouderklasse of superklasse. De afgeleide klasse wordt onderliggende klasse of subklasse genoemd.
De syntaxis van Java-overerving is als volgt.
class subclass_name breidt superclass_name uit {
variabele declaratie;
methodeverklaring;
}
Overervingsconcept kan worden uitgelegd aan de hand van het volgende voorbeeld. Neem aan dat er een klasse is met de naam A als volgt.
publieke klasse A{
public void sum(){
Systeem.uit.println(“Som”);
}
}
Als we een nieuwe methode willen toevoegen zonder de bestaande klasse te wijzigen, kunnen we dat als volgt doen.
publieke klasse B{
public void sub(){
System.out.println(“Sub”);
}
}
Programmer kan overerving gebruiken om klasse A sum() te gebruiken.
publieke klasse B breidt klasse A uit{
public void sub(){
System.out.println(“Sub”);
}
}
In de hoofdfunctie is het mogelijk om een object van B aan te maken en sub() aan te roepen, dat tot klasse B behoort en sum(), dat tot klasse A behoort, door overerving te gebruiken.
public static void main(String args){
B obj=nieuwe B();
obj.sub();
obj.sum();
}
Er zijn verschillende soorten overerving. Dit zijn enkele overerving, meervoudige overerving, overerving op meerdere niveaus en hiërarchische overerving. Bij enkele overerving is er één basisklasse en één afgeleide klasse. Bij overerving op meerdere niveaus zijn er drie klassen, namelijk basisklasse, tussenklasse en afgeleide klasse. De tussenklasse erft van de basisklasse en afgeleide klasse erft van de tussenklasse. Bij hiërarchische overerving is er één basisklasse en vele afgeleide klassen. Er is een speciaal type dat bekend staat als hybride overerving. Het is een combinatie van twee of meer soorten overerving.
Figuur 01: Overerving
Bij meervoudige overerving zijn er veel basisklassen en één afgeleide klasse. Neem aan dat klasse A en B de basisklassen zijn. Klasse C is de afgeleide klasse. Als zowel A- als B-klassen dezelfde methode hebben en de programmeur die methode aanroept vanuit de afgeleide klasse, zal dit een ambiguïteitsprobleem veroorzaken. Het erven van twee klassen kan een compileerfout veroorzaken. Daarom wordt meervoudige overerving niet ondersteund in Java. Er kan een interface worden gebruikt om dat probleem op te lossen.
Wat is interface in Java?
Abstractie is een proces waarbij de implementatiedetails worden verborgen en alleen de functionaliteiten aan de gebruiker worden getoond. Abstractie kan worden bereikt met behulp van abstracte klassen of interfaces. Een abstracte methode is een methode zonder implementatie. Een klasse met ten minste één abstracte methode is een abstracte klasse. Voorbeeld van een abstracte klasse is als volgt.
abstracte klasse A{
abstract void sum();
}
Veronderstel dat er twee abstracte klassen zijn als A en B. Om abstracte methoden van A en B te implementeren, wordt een nieuwe klasse C gemaakt. Dan zou klasse C zowel A als B moeten uitbreiden, maar meervoudige overerving wordt niet ondersteund in Java. Daarom moeten interfaces gebruiken. Interfaces kunnen worden gebruikt om methoden te declareren, maar het is niet mogelijk om methoden te definiëren. Het is niet mogelijk om een object te maken met behulp van interfaces. Klasse C zou alle methoden in interface A en B moeten implementeren.
interface A{
void sum();
}
interface B{
ongeldige sub();
}
klasse C implementeert A, B{
public void sum(){
System.out.println(“Samentelling”);
}
public void sub(){
System.out.println(“Aftrekken”);
}
}
Nu is het in het hoofdprogramma mogelijk om een object van C te maken en beide methoden aan te roepen.
public static void main (String args) {
C obj=nieuwe C();
obj.sum();
obj.sub();
}
Dus, interfaces kunnen gebruiken om meervoudige overerving te implementeren.
Een ander gebruik van interfaces is dat het beveiliging biedt. Raadpleeg de onderstaande code.
interface A {
ongeldige som ();
}
klasse B implementeert A {
openbare ongeldige som () {
System.out.println(“Samentelling”);
}
public void vermenigvuldigen () {
System.out.println(“Vermenigvuldigen”);
}
}
Bij het maken van een object van B is het mogelijk om beide methoden sum () en vermenigvuldigen () aan te roepen. Als de programmeur het gebruik van de functie vermenigvuldigen () wil beperken, is dat als volgt mogelijk.
public static void main(String args){
A obj=nieuwe B();
obj.sum();
}
A obj=nieuwe B(); zal een object maken. Het is van het type A en het geheugen is toegewezen als B. Het is mogelijk om sum() aan te roepen, maar vermenigvuldigen() kan niet worden uitgevoerd. Deze beperking wordt gedaan met behulp van interfaces.
Wat zijn de overeenkomsten tussen overerving en interface in Java?
- Beide concepten hebben betrekking op objectgeoriënteerd programmeren
- Beide vertegenwoordigen IS-A-relatie.
Wat is het verschil tussen overerving en interface in Java?
Overerving versus interface in Java |
|
Overerving is een OOP-concept om nieuwe klassen af te leiden uit de bestaande klassen. | Interface is een mechanisme in OOP om abstractie en meervoudige overerving te implementeren. |
Gebruik | |
Overerving biedt herbruikbaarheid van code. | Interfaces bieden abstractie en meervoudige overerving. |
Samenvatting – Overerving versus interface in Java
Java is een programmeertaal met meerdere paradigma's die objectgeoriënteerd programmeren ondersteunt. Overerving en interfaces zijn gerelateerd aan objectgeoriënteerd programmeren. Het verschil tussen overerving en interface is dat overerving is om nieuwe klassen af te leiden van bestaande klassen en interfaces om abstracte klassen en meervoudige overerving te implementeren.
Download de PDF-versie van Inheritance vs Interface in Java
U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens de citatienota. Download hier de PDF-versie. Verschil tussen overerving en interface in Java