Java >> Java tutorial >  >> Java

Polymorfi i Java

Hvad er polymorfi?

Polymorfi er et objekts evne til at have en anden form. Så polymorfisme betyder bogstaveligt talt, at ordet polymorfi betyder at have forskellige former, og når du definerer et objekt, kaldes et klasseobjekt, og dets egenskab og kvalitet med mange former, kaldes polymorfi.

Hvordan vi kan gøre vores klasser til polymorfi, eller hvordan du kan definere et objekt, der følger efter polymorfi.

Her vil jeg give et eksempel.

Så jeg har fire klasser defineret. Den ene kaldes bankklassen, som vil være min basisklasse, og denne bankklasse indeholder tre eller én metoder.

package lesson1;

public class Bank {
   int getInterestRate() {
         return 0;
   }
 }

Denne basisklassemetode giver bare rentesatsen, så vi vil definere denne metode som få rente. Og fordi det er en basisklasse, vil det returnere 0 som en rente.

Vi har også defineret Bank_ABC klasse, Bank_DEF klasse og Bank_XYZ klasse.

Så hvis du ikke ved, hvordan man laver en klasse, skal du bare højreklikke på ny, gå til klasse, og herinde navngive klassen. Så det er sådan, jeg har lavet disse klasser.

Så den ene hedder bankklassen, som bliver min hovedklasse.

For det andet hedder klasse Bank_ABC , som strækker sig fra bankklasse, fordi bankklasse er vores basisklasse og Bank_ABC er vores afledte klasse. Og dette indeholder også den samme metode, men dette returnerer rentesatsen, eller denne bank har en rentesats =5%.

package lesson1;

 public class_BankABC extends Bank {
         int getInterestRate() {
             return 5;
         }
 }

Bank_DEF, som også strækker sig fra Bank-klassen har en rentesats på 6%. Så jeg har defineret en metode her, som giver 6 % tilbage. Simpelt!

package lesson1;

 public class_BankDEF extends Bank {
         int getInterestRate() {
             return 6;
         }
  }

Og Bank klasse XYZ som også strækker sig fra Bank. Så dette er den afledte klasse, og dette er basisklassen, har også samme metode til at få rente, og renten i denne bank er 10%.

package lesson1;

 public class_BankXYZ extends Bank {
        int getInterestRate() {
             return 10;
         }
 }

Så jeg har den samme metode i alle de fire klasser for at få rente, og den eneste forskel i denne funktion er renten. Selve hovedbanken har 0, Bank ABC har 5 % rente, Bank DEF har 6 % rente og Bank XYZ har 10 % rente.

Nu er der en ejendom i Java kaldet polymorfi, hvormed du kan definere referencen, eller du kan pege referencen til en basisklasse til ethvert objekt i den afledte klasse. Så det, jeg mener med det, er, at når referenceobjekt eller reference for en overordnet klasse peger på objektet for underklassen, kaldes det upcasting. Og dette er det grundlæggende du kender ekstrakt af polymorfi. Så vores, vi vil definere referencen for vores Bank-klasse, hvor vi blot vil definere Bank b1 =eller Bank abc=. Så dette er referencen til Bank-klassen, som vil pege på objektet for Bank ABC, som er en børneklasse.

package lesson1;

 public class MyClass {
    public static void main(string[] args) {
      Bank abc = new Bank_ABC();
     }

 }

og det er det, vi kalder polymorfi. Når et objekt kan have en anden form Så objektet i Bank-klassen har form af Bank ABC.

Så henvisningen til Bank-klassen, der peger på objektet for Bank ABC-klassen. På samme måde kan vi definere forskellige objekter herfra. Du kan definere Bank def og her også Bank DEF og Bank xyz og Bank XYZ..

package lesson1;

 public class MyClass {
    public static void main(string[] args) {
        Bank abc = new Bank_ABC();
        Bank def = new Bank_DEF();
        Bank xyz = new Bank_XYZ();
       }

}

Så og lad os se, at det havde samme navn eller ej. Dette skal understreges. Så vi har defineret tre referencer til selve bankklassen, som peger på underklasserne eller objektet for underklasser. Reference abc peger på objektet i Bank_ABC-klassen, reference def peger på referenceobjektet i DEF-klassen og reference xyz peger på objekt XYZ-klassen. Og jeg kan kalde alle disse metoder få rente fra alle disse referencer. Så jeg kan bare skrive syso ctlr shift og på samme måde vil jeg gøre tre gange. og første gang vil jeg tage abc som mit objekt, og jeg vil bare ringe til få rente, og i den anden erklæring vil jeg indsætte def.getinterestrate og tredje gang vil jeg indsætte xyz som min instans, og jeg vil kalde getinterestrate.

package lesson1;

 public class MyClass {
    public static void main(string[] args) {
        Bank abc = new Bank_ABC();
        Bank def = new Bank_DEF();
        Bank xyz = new Bank_XYZ();

        System.out.print1n(abc.getInterestRate());
        System.out.print1n(def.getInterestRate());
        System.out.print1n(xyz.getInterestRate());

      }
 }

Og når jeg kører programmet får jeg 5,6 og 10.

package lesson1;

 public class MyClass {
    public static void main(string[] args) {
        Bank abc = new Bank_ABC();
        Bank def = new Bank_DEF();
        Bank xyz = new Bank_XYZ();

        System.out.print1n(abc.getInterestRate());
        System.out.print1n(def.getInterestRate());
        System.out.print1n(xyz.getInterestRate());

      }

Så denne type reference, der definerer reference fra objektet af underklasser, kaldes polymorfi, og alt hvad du ved medlem, funktioner er tilgængelige gennem denne reference. Så denne get-rente er tilgængelig her i alle klasser. Og denne Bank ABC giver 5% rente, så det er afkast 5. Bank DEF giver 6% rente, så den vender tilbage, og Bank XYZ giver 10% rente, så den returnerer 10. Men det interessante her er, at alle er genstand for banken eller alle referencer peger på forskellige objekter, men alle objekter er fra bankklassen.

Så det er sådan polymorfi fungerer i java.


Java tag