Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

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

Overbelasting methode

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

  1. Java-polymorfisme
  2. C# Abstract Class-zelfstudie met voorbeeld:wat is abstractie?
  3. Wat is interface in C# met voorbeeld?
  4. OOPs-concepten in Java | Wat is, Basis met voorbeelden
  5. String Length() Methode in Java:Hoe te vinden met Voorbeeld
  6. Java String charAt() Methode met Voorbeeld
  7. Java String bevat() Methode | Controleer subtekenreeks met voorbeeld
  8. Java String endsWith() Methode met voorbeeld
  9. Statische variabele in Java:wat is statisch blok en methode [voorbeeld]
  10. Interface versus abstracte klasse in Java:wat is het verschil?
  11. Java BufferedReader:hoe een bestand in Java te lezen met voorbeeld