Polymorfisme in Java OOP's met voorbeeld:Wat is, dynamisch
Wat is polymorfisme in Java?
Polymorfisme in Java treedt op wanneer er een of meer klassen of objecten zijn die door overerving aan elkaar zijn gerelateerd. Het is het vermogen van een object om vele vormen aan te nemen. Overerving laat gebruikers attributen en methoden erven, en polymorfisme gebruikt deze methoden om verschillende taken uit te voeren. Het doel is dus communicatie, maar de aanpak is anders.
Je hebt bijvoorbeeld een smartphone voor communicatie. De communicatiemodus die u kiest, kan van alles zijn. Het kan een oproep zijn, een sms-bericht, een MMS-bericht, e-mail, enz. Het doel is dus algemeen dat communicatie is, maar hun aanpak is anders. Dit wordt polymorfisme . genoemd Nu zullen we polymorfisme in Java leren met een voorbeeld.
In deze Java-tutorial leer je-
- Wat is polymorfisme in Java?
- Java-polymorfisme in OOP's met voorbeeld
- Methode overschrijven in Java
- Verschil tussen overbelasten en overschrijven
- Wat is dynamisch polymorfisme?
- Verschil tussen statisch en dynamisch polymorfisme
- Superzoekwoord in Java
Klik hier als de video niet toegankelijk is
Java-polymorfisme in OOP's met voorbeeld
We hebben één ouderklasse, 'Account' met functie van storten en opnemen. Account heeft 2 kinderklassen
De werking van storten en opnemen is hetzelfde voor spaar- en betaalrekeningen. Dus de overgeërfde methoden van de accountklasse zullen werken.
Voorbeeld van Java-polymorfisme
Wijziging in softwarevereisten
Er is een wijziging in de specificatie van de vereisten, iets dat zo gebruikelijk is in de software-industrie. Het is de bedoeling dat u een met functionaliteit bevoorrechte Bankrekening met Overdispositie Faciliteit toevoegt.
Ter informatie:rood staan is een faciliteit waarbij u een bedrag kunt opnemen dat hoger is dan het beschikbare saldo op uw rekening.
Dus de methode voor bevoorrechte behoeften intrekken om opnieuw te worden geïmplementeerd. Maar u wijzigt het geteste stukje code niet in Spaar- en Betaalrekening. Dit is het voordeel van OOPS
Stap 1) Zodanig dat wanneer de "teruggetrokken" methode voor het opslaan van een account wordt aangeroepen, een methode uit de bovenliggende accountklasse wordt uitgevoerd
Stap 2) Maar wanneer de methode "Opnemen" voor de geprivilegieerde rekening (rekening-courantkrediet) wordt genoemd, wordt de in de bevoorrechte klasse gedefinieerde opnamemethode uitgevoerd. Dit is Polymorfisme in OOP's.
Methode overschrijven in Java
Method Overriding is het herdefiniëren van een superklassemethode in een subklasse.
Regels voor het overschrijven van methoden
- De handtekening van de methode, d.w.z. de naam van de methode, de parameterlijst en het retourtype moeten exact overeenkomen.
- De overschreven methode kan de toegankelijkheid verbreden maar niet verkleinen, d.w.z. als het privé is in de basisklasse, kan de onderliggende klasse het openbaar maken, maar niet omgekeerd.
Voorbeeld
class Doctor{ public void treatPatient(){ // treatPatient method } class Surgeon extends Doctor{ public void treatPatient(){ // treatPatient method } } Class run{ public static void main (String args[]){ Doctor doctorObj = new Doctor() // treatPatient method in class Doctor will be executed doctorObj.treatPatient(); Surgeon surgeonObj = new Surgeon(); // treatPatient method in class Surgeon will be executed surgeonObj.treatPatient(); } }
Verschil tussen overbelasten en overschrijven
Methode overschrijven | |
---|---|
Overbelasting van methoden zit in dezelfde klasse, waarbij meer dan één methode dezelfde naam heeft maar verschillende handtekeningen. | Het overschrijven van methoden is wanneer een van de methoden in de superklasse opnieuw wordt gedefinieerd in de subklasse. In dit geval blijft de handtekening van de methode hetzelfde. |
Bijvoorbeeld: void sum (int a , int b); void sum (int a , int b, int c); void sum (float a, double b); | Bijvoorbeeld: class X{ public int sum(){ // some code } } class Y extends X{ public int sum(){ //overridden method //signature is same } } |
Wat is dynamisch polymorfisme?
Dynamisch polymorfisme in OOP's is het mechanisme waarmee meerdere methoden kunnen worden gedefinieerd met dezelfde naam en handtekening in de superklasse en subklasse. De aanroep van een overschreven methode wordt tijdens runtime opgelost.
Dynamisch polymorfisme Voorbeeld:
Een referentievariabele van de superklasse kan verwijzen naar een subklasseobject
Doctor obj = new Surgeon();
Overweeg de verklaring
obj.treatPatient();
Hier is de referentievariabele "obj" van de bovenliggende klasse, maar het object waarnaar het verwijst is van de onderliggende klasse (zoals weergegeven in het onderstaande diagramvoorbeeld van polymorfisme).
obj.treatPatient() voert de methode treatPatient() uit van de subklasse – Chirurg
Als een basisklassereferentie wordt gebruikt om een methode aan te roepen, wordt de aan te roepen methode bepaald door de JVM, afhankelijk van het object waarnaar de verwijzing verwijst
Hoewel obj bijvoorbeeld een verwijzing is naar Doctor, roept het de methode van Surgeon aan, omdat het verwijst naar een Surgeon-object
Dit wordt beslist tijdens runtime en wordt daarom dynamisch . genoemd of run-time polymorfisme
Verschil tussen statisch en dynamisch polymorfisme
Statisch polymorfisme in Java is een type polymorfisme dat de informatie verzamelt voor het aanroepen van een methode tijdens compilatie, terwijl dynamisch polymorfisme een type polymorfisme is dat de informatie verzamelt voor het aanroepen van een methode tijdens runtime.
Statisch polymorfisme | Dynamisch polymorfisme |
---|---|
Het heeft te maken met overbelasting van de methode. | Het heeft betrekking op het overschrijven van methoden. |
Eventuele fouten worden tijdens het compileren opgelost. Aangezien de code niet wordt uitgevoerd tijdens het compileren, vandaar de naam static. Bijvoorbeeld: void sum (int a , int b); void sum (float a, double b); int sum (int a, int b); //compiler gives error. | In het geval dat een referentievariabele een overschreven methode aanroept, wordt de aan te roepen methode bepaald door het object waarnaar uw referentievariabele verwijst. Dit kan alleen tijdens runtime worden bepaald wanneer code wordt uitgevoerd, vandaar de naam dynamisch. Bijvoorbeeld: //reference of parent pointing to child object Doctor obj = new Surgeon(); // method of child called obj.treatPatient(); |
Superzoekwoord in Java
Wat als de methode treatPatient in de klasse Surgeon de functionaliteit wil uitvoeren die is gedefinieerd in de klasse Doctor en vervolgens zijn eigen specifieke functionaliteit wil uitvoeren?
In dit geval zoekwoord super
kan worden gebruikt om toegang te krijgen tot methoden van de bovenliggende klasse vanuit de onderliggende klasse.
De methode treatPatient in de klasse Surgeon kan worden geschreven als:
treatPatient(){ super.treatPatient(); //add code specific to Surgeon }
Het sleutelwoord super kan worden gebruikt om toegang te krijgen tot elk gegevenslid of elke methode van de superklasse in de subklasse.
Vervolgens zullen we met voorbeeldprogramma's leren over Super-trefwoord, Overerving en Polymorfisme in Java.
Voorbeeld:- Om overerving, polymorfisme en superzoekwoord te leren
Stap 1) Kopieer de volgende code naar een Editor
public class Test{ public static void main(String args[]){ X x= new X(); Y y = new Y(); y.m2(); //x.m1(); //y.m1(); //x = y;// parent pointing to object of child //x.m1() ; //y.a=10; } } class X{ private int a; int b; public void m1(){ System.out.println("This is method m1 of class X"); } } class Y extends X{ int c; // new instance variable of class Y public void m1(){ // overriden method System.out.println("This is method m1 of class Y"); } public void m2(){ super.m1(); System.out.println("This is method m2 of class Y"); } }
Stap 2) Bewaar, compileer en voer de code uit. Observeer de output.
Stap 3) Uncomments regels # 6-9. Bewaar, compileer en voer de code uit. Observeer de output.
Stap 4) Uncomment regel #10. Bewaar en compileer de code.
Stap 5) Fout =? Dit komt omdat subklassen geen toegang hebben tot privéleden van de superklasse.
Samenvatting
- Polymorfisme in objectgeoriënteerd programmeren treedt op wanneer er een of meer klassen of objecten zijn die door overerving aan elkaar zijn gerelateerd. Het is het vermogen van een object om vele vormen aan te nemen.
- Methode overschrijven is het herdefiniëren van een superklassemethode in een subklasse.
- Dynamisch polymorfisme in Java is het mechanisme waarmee meerdere methoden kunnen worden gedefinieerd met dezelfde naam en handtekening in de superklasse en subklasse.
- Statisch polymorfisme in Java is een type polymorfisme dat de informatie verzamelt voor het aanroepen van een methode tijdens compilatie, terwijl dynamisch polymorfisme een type polymorfisme is dat de informatie verzamelt voor het aanroepen van een methode tijdens runtime.
- Super trefwoord kan worden gebruikt om toegang te krijgen tot methoden van de bovenliggende klasse vanuit de onderliggende klasse.
Java
- Java-polymorfisme
- C# Abstract Class-zelfstudie met voorbeeld:wat is abstractie?
- Wat is interface in C# met voorbeeld?
- OOPs-concepten in Java | Wat is, Basis met voorbeelden
- String Length() Methode in Java:Hoe te vinden met Voorbeeld
- Java String charAt() Methode met Voorbeeld
- Java String bevat() Methode | Controleer subtekenreeks met voorbeeld
- Java String endsWith() Methode met voorbeeld
- Statische variabele in Java:wat is statisch blok en methode [voorbeeld]
- Interface versus abstracte klasse in Java:wat is het verschil?
- Java BufferedReader:hoe een bestand in Java te lezen met voorbeeld