Tipuri de polimorfism în java-Runtime și Compile time polimorfism

în ultimul tutorial am discutat polimorfismul în Java. În acest ghid vom vedea tipuri de polimorfism. Există două tipuri de polimorfism în java:
1) polimorfismul Static cunoscut și sub numele de polimorfism în timpul compilării
2) polimorfismul dinamic cunoscut și sub numele de polimorfism în timpul rulării

polimorfismul în timpul compilării (sau polimorfismul Static)

polimorfismul care este rezolvat în timpul compilatorului este cunoscut sub numele de polimorfism static. Supraîncărcarea metodei este un exemplu de polimorfism al timpului de compilare.
supraîncărcarea metodei: acest lucru ne permite să avem mai multe metode cu același nume, dacă parametrii metodelor sunt diferiți ca număr, secvență și tipuri de date de parametri. Am discutat deja despre supraîncărcarea metodei aici: dacă nu ați citit acest ghid, consultați: supraîncărcarea metodei în Java

exemplu de polimorfism static

supraîncărcarea metodei este unul dintre modurile în care java acceptă polimorfismul static. Aici avem două definiții ale aceleiași metode add () care add metoda ar fi numit este determinată de lista de parametri la momentul compilării. Acesta este motivul pentru care acest lucru este cunoscut și sub numele de polimorfism al timpului de compilare.

class SimpleCalculator{ int add(int a, int b) { return a+b; } int add(int a, int b, int c) { return a+b+c; }}public class Demo{ public static void main(String args) { SimpleCalculator obj = new SimpleCalculator(); System.out.println(obj.add(10, 20)); System.out.println(obj.add(10, 20, 30)); }}

ieșire:

3060

Runtime polimorfism(sau polimorfism dinamic)

este, de asemenea, cunoscut sub numele de metoda dinamică expediere. Polimorfismul dinamic este un proces în care un apel către o metodă suprascrisă este rezolvat în timpul rulării, de aceea se numește polimorfism în timpul rulării. Am discutat deja metoda overriding în detaliu într-un tutorial separat, consultați-l: Metoda Overriding în Java.

exemplu
în acest exemplu avem două clase ABC și XYZ. ABC este o clasă părinte și XYZ este o clasă copil. Clasa copil suprascrie metoda myMethod () a clasei părinte. În acest exemplu, avem obiect de clasă copil atribuit referinței clasei părinte, astfel încât, pentru a determina ce metodă ar fi apelată, tipul obiectului ar fi determinat în timpul rulării. Este tipul de obiect care determină ce versiune a metodei ar fi numită (nu Tipul de referință).

pentru a înțelege conceptul de prioritate, ar trebui să aveți cunoștințele de bază ale moștenirii în Java.

class ABC{ public void myMethod(){System.out.println("Overridden Method"); }}public class XYZ extends ABC{ public void myMethod(){System.out.println("Overriding Method"); } public static void main(String args){ABC obj = new XYZ();obj.myMethod(); }}

ieșire:

Overriding Method

când o metodă suprascrisă este apelată printr-o referință a clasei părinte, atunci tipul obiectului determină ce metodă urmează să fie executată. Astfel, această determinare se face în timpul rulării.
deoarece ambele clase, clasa copil și clasa părinte au aceeași metodă animalSound. Ce versiune a metodei (clasa copil sau clasa părinte) va fi apelată este determinată în timpul rulării de JVM.

câteva exemple imperative:

ABC obj = new ABC();obj.myMethod();// This would call the myMethod() of parent class ABCXYZ obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZABC obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZ

în al treilea caz, metoda clasei copil trebuie executată deoarece metoda care urmează să fie executată este determinată de tipul de obiect și, deoarece obiectul aparține clasei copil, se numește versiunea clasei copil a myMethod ().

Lasă un răspuns

Adresa ta de email nu va fi publicată.

More: