Overerving in Java OOP’s met voorbeeld

Wat is Inheritance?

Inheritance is een mechanisme waarbij de ene klasse het eigendom van een andere klasse verwerft. Een kind erft bijvoorbeeld de eigenschappen van zijn / haar ouders. Met overerving kunnen we de velden en methoden van de bestaande klasse hergebruiken. Daarom vergemakkelijkt overerving herbruikbaarheid en is het een belangrijk concept van OOP’s.

In deze tutorial leer je-

  • Soorten overerving
  • Overerving in Java
  • Java Overervingsvoorbeeld
  • Superzoekwoord
  • Leer overerving in OOP’s met voorbeeld

Soorten overerving

Er zijn Verschillende soorten overerving in Java:

Single Inheritance:

In Single Inheritance breidt de ene klasse een andere klasse uit (slechts één klasse).

Single Inheritance

In het bovenstaande diagram breidt Klasse B alleen Klasse A uit. Klasse A is een superklasse en Klasse B is een subklasse.

Meervoudige overerving:

Bij meervoudige overerving breidt één klasse meer uit dan één klas. Java ondersteunt geen meervoudige overerving.

Meervoudige overerving

Zoals in het bovenstaande diagram, breidt Klasse C zowel Klasse A als Klasse B uit.

Overerving op meerdere niveaus:

Bij Overerving op meerdere niveaus kan één klasse erven van een afgeleide klasse. Daarom wordt de afgeleide klasse de basisklasse voor de nieuwe klasse.

Overerving op meerdere niveaus

Zoals weergegeven in diagram Klasse C is een subklasse van B en B is een van subklasse Klasse A.

Hiërarchische overerving:

In hiërarchische overerving wordt één klasse overgeërfd door vele subklassen.

Hiërarchische overerving

Zoals in bovenstaand voorbeeld erven Klasse B, C en D hetzelfde klasse A.

Hybride overerving:

Hybride overerving is een combinatie van enkelvoudige en meervoudige overerving.

Hybrid Inheritance

Zoals in bovenstaand voorbeeld zijn alle openbare en beschermde leden van Klasse A geërfd in Klasse D, eerst via Klasse B en ten tweede via Klasse C.

Opmerking: Java ondersteunt geen hybride / meervoudige overerving

Overerving in Java

JAVA-INHERITANCE is een mechanisme waarbij de ene klasse de eigenschap van een andere klasse verwerft. In Java, wanneer er een “Is-A” -relatie bestaat tussen twee klassen, gebruiken we Inheritance. De bovenliggende klasse wordt een super genoemd. klasse en de overgenomen klasse wordt een subklasse genoemd. Het trefwoord extends wordt door de subklasse gebruikt om de kenmerken van de superklasse over te nemen.

Overerving is belangrijk omdat het leidt tot herbruikbaarheid van code.

Java Inheritance Syntax:

class subClass extends superClass { //methods and fields } 

Java Inheritance E xample

Super sleutelwoord

Het super sleutelwoord is vergelijkbaar met “dit” sleutelwoord.

Het sleutelwoord super kan worden gebruikt om toegang te krijgen tot elk gegevenslid of methoden van de bovenliggende klasse.

Supersleutelwoord kan worden gebruikt op variabel, methode- en constructorniveau.

Syntaxis:

super.<method-name>();

Leer overerving in OOP’s met voorbeeld

Beschouw dezelfde banktoepassing als in het vorige voorbeeld .

Het is de bedoeling dat we twee verschillende accounttypes openen, een om te sparen en een ander om te controleren (ook bekend als huidig).

Laten we vergelijken en onderzoeken hoe we codering kunnen benaderen vanuit een gestructureerd en objectgeoriënteerd programmeerperspectief. Structurele benadering: Bij gestructureerd programmeren zullen we twee functies creëren –

  1. Een om op te nemen
  2. en de andere voor stortingsacties.

Aangezien de de werking van deze functies blijft hetzelfde voor alle accounts.

OOP’s benadering: Tijdens het gebruik van de OOP-programmeerbenadering. We zouden twee klassen maken.

  • Elk met implementatie van de stortings- en intrekkingsfuncties.
  • Dit zal extra werk overbodig maken.

Wijzigingsverzoek in software

Nu is er een wijziging in de specificatie van vereisten voor iets dat zo gebruikelijk is in de software-industrie. Het is de bedoeling dat u een geprivilegieerde bankrekening met een kredietfaciliteit toevoegt. Voor een achtergrond is rood staan een faciliteit waarbij u een hoger bedrag kunt opnemen dan het beschikbare saldo op uw rekening.

Structurele benadering: met een functionele benadering moet ik mijn intrekkingsfunctie wijzigen, die al is getest en baseline. En als u een methode zoals hieronder toevoegt, zorgt u voor nieuwe vereisten.

OOP’s benadering: als je de OOP-benadering gebruikt, hoef je alleen maar schrijf een nieuwe klasse met een unieke implementatie van de intrekkingsfunctie. We hebben het geteste stukje code nooit aangeraakt.

Nog een wijzigingsverzoek

Wat gebeurt er als de vereiste verandert verder? Graag een creditcardaccount toevoegen met zijn eigen unieke vereiste van stortingen.

Structurele aanpak: Met een structurele aanpak moet je het geteste stukje stortingscode wijzigen nog een keer.

OOP’s benadering: maar als je een objectgeoriënteerde benadering gebruikt, zul je creëer een nieuwe klasse met zijn unieke implementatie van de stortingsmethode (rood gemarkeerd in de afbeelding hieronder).

Dus hoewel de structurele programmering aanvankelijk een gemakkelijke aanpak lijkt, wint OOP op lange termijn.

Voordeel van overerving in OOP’s

Maar men kan beargumenteer dat je in alle klassen herhaalde stukjes code hebt.

Om dit te verhelpen, maakt u een bovenliggende klasse aan, zegt u “account” en implementeert u dezelfde functie van storten en opnemen. En maak onderliggende klassen erfelijke “account” -klasse. Zodat ze toegang hebben tot functies voor opname en storting in de rekeningklasse.

De functies hoeven niet afzonderlijk te worden geïmplementeerd. Dit is overerving in java.

Write a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *