Tipuri de polimorfism în Java [polimorfism static și dinamic cu exemple]
Publicat: 2021-06-18Cuprins
Ce este polimorfismul în Java?
Unul dintre conceptele importante din programarea orientată pe obiecte (OOP) este polimorfismul, ceea ce înseamnă că o singură acțiune poate fi efectuată în moduri diferite. Este derivat din cuvintele grecești: poli și morphs care înseamnă multe și forme. Diferitele forme există atunci când sunt legate prin moștenire.
La fel ca moștenirea care moștenește metode și atribute dintr-o clasă diferită, polimorfismul aplică acele metode și îndeplinește sarcini diferite. Un obiect este capabil să se muleze în diverse forme prin polimorfism.
Adică, o entitate poate efectua diferite operațiuni în diferite scenarii. Una dintre cele mai comune utilizări ale polimorfismului în programarea orientată pe obiecte este atunci când o referință de clasă părinte este folosită pentru a se referi la un obiect de clasă copil. Citiți mai multe despre diverse concepte și exemple de POO.
Polimorfismul în Java poate fi realizat prin trei metode:
Suprascrierea metodei: Dacă o superclasă și o subclasă constau din aceeași metodă, atunci suprascrierea metodei se referă la procesul de suprascriere a metodei din superclasă de către metoda din subclasă. Ca urmare, aceeași metodă va fi utilizată în condiții diferite, efectuând operații diferite.
Ieșirea programului:
Limbajul de programare Java
Limba engleză comună
- Supraîncărcarea metodelor: Supraîncărcarea metodelor se referă la procesul de creare a metodelor cu același nume, dar cu parametri diferiți. Exemplele includ: void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.
Ieșire
*********
##########
- Supraîncărcarea operatorului: Supraîncărcarea operatorului este un concept în Java în care un operator se comportă diferit cu operanzi diferiți. Exemplele includ:
- Operatorul „+” poate fi folosit atât în adunarea numerică, cât și în concatenarea șirurilor.
Adunare numerică | Concatenarea șirurilor |
int a = 5; int b = 6; int suma = a + b; // Ieșire = 11 | String first = „Python”; String secundă = „Programare”; nume = primul + al doilea; // Ieșire = Programare Python |
- Operatorii &,|, și ! poate fi folosit pentru supraîncărcare logică și pe biți.
Tipuri de polimorfism în Java
Programarea orientată pe obiecte se concentrează pe patru concepte de bază, adică abstractizare, încapsulare, moștenire și polimorfism. Polimorfismul este capacitatea de a procesa diferit obiectele pe baza clasei și a tipurilor de date.
Există două tipuri de polimorfism în Java : polimorfism în timp de compilare și polimorfism în timp de rulare în java . Acest polimorfism java este denumit și polimorfisme statice și polimorfisme dinamice.
1. Polimorfism static (sau polimorfism în timp de compilare)
La fel ca majoritatea celorlalte limbaje de programare OOP, polimorfismul Java permite încorporarea mai multor metode într-o clasă. Metodele folosesc același nume, dar parametrul variază. Acesta reprezintă polimorfismul static. Acest polimorfism este rezolvat în timpul compilatorului și se realizează prin supraîncărcarea metodei. Sunt furnizate trei criterii în care seturile de parametri trebuie să difere:
- Numărul parametrilor ar trebui să varieze.
- Tipurile de parametri ar trebui să fie diferite.
- Ordine diferită a parametrilor. De exemplu, dacă o metodă acceptă un șir și un lung, în timp ce cealaltă metodă acceptă un șir lung și un șir. Cu toate acestea, acest tip de comandă face dificilă înțelegerea API-ului.
Datorită diferenței dintre parametri, fiecare metodă are o semnătură diferită. Compilatorul Java are o idee despre ce metodă este numită.
Învață cursuri de software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Exemplu de polimorfism static
Una dintre modalitățile prin care Java acceptă polimorfismul static este supraîncărcarea metodei. Un exemplu care arată cazul supraîncărcării metodei în polimorfismul static este prezentat mai jos:
Exemplu:
clasa SimpleCalculator
{
int add(int a, int b)
{
returnează a+b;
}
int add(int a, int b, int c)
{
returnează a+b+c;
}
}
Demo de clasă publică
{
public static void main(Argumente șir[])
{
SimpleCalculator obj = new SimpleCalculator();
System.out.println(obj.add(25, 25));
System.out.println(obj.add(25, 25, 30));
}
}
Ieșirea programului
50
80
2. Polimorfism dinamic (sau polimorfism de rulare în Java)
În această formă de polimorfism în java , compilatorul nu determină metoda care trebuie executată. Este Java Virtual Machine (JVM) care realizează procesul în timpul rulării. Polimorfismul dinamic se referă la procesul când un apel la un proces suprascris este rezolvat în timpul rulării. Variabila de referință a unei superclase apelează metoda suprascrisă. Metodele care sunt implementate atât de subclasă, cât și de superclasă oferă funcționalități diferite în timp ce partajează același nume.
Înțelegerea procesului de upcasting este crucială înainte de a înțelege conceptul de polimorfism în timp de rulare. Upcasting se referă la procesul în care un obiect al clasei copil este referit printr-o variabilă de referință a superclasei. Aflați despre polimorfism în PHP.
Exemplu de polimorfism dinamic (sau timp de rulare)
Exemplul 1:
Sunt create două clase Bike și Splendor, iar clasa Splendor extinde clasa Bike suprascriind metoda run(). Metoda run() este apelată de variabila de referință a clasei părinte. Deoarece metoda subclasei suprascrie metoda clasei părinte; metoda subclaselor este invocată în timpul rulării.
Programul
bicicletă de clasă {
void run(){System.out.println(„rulează”);}
}
clasa Splendor extinde bicicleta{
void run(){System.out.println(„merg în siguranță cu 30 km”);}
public static void main(Argumente șir[]){
Bicicletă b = nou Splendor();//upcasting
b.run();
}
}
Ieșire: mers pe jos în siguranță cu 60 km
Exemplul 2
Sunt create două clase cu numele „ABC” și „XYZ”, unde XYZ este o clasă copil și ABC este o clasă părinte. Aici, metoda myMethod() a clasei părinte este suprascrisă de clasa copil. Obiectul clasei copil este atribuit referinței clasei părinte.
Program:
clasa ABC{
public void myMethod(){
System.out.println(„Metoda suprascrisă”);
}
}
clasa publică XYZ extinde ABC{
public void myMethod(){
System.out.println(„Metoda de suprascriere”);
}
public static void main(Argumente șir[]){
ABC obj = nou XYZ();
obj.myMethod();
}
}
Ieșire
Metoda de suprascriere
Concluzie
Conceptul de polimorfism în java este una dintre cele mai utile caracteristici în programarea orientată pe obiecte. Mai mult, capacitatea de a invoca o metodă atât în timpul static, cât și în timpul de rulare, extinde aplicabilitatea acesteia.
Ideea din spatele aducerii conceptului de polimorfism este flexibilitatea. În plus, capacitatea de a procesa un număr mare de obiecte într-o singură variabilă de referință face codarea puțin mai ușoară. Prin urmare, conceptul ar trebui să fie utilizat în sarcinile zilnice de codificare și să îmbrățișeze eficacitatea acestuia.
Dacă doriți să aflați mai multe despre tehnologia software, dezvoltarea acesteia și mecanismul din spatele acesteia, puteți verifica cursul Executive PG Program in Software Development – Specialization in Full Stack Development oferit de upGrad. Cursul de specializare este un program online de 23 de săptămâni care oferă peste 300 de studii de caz pentru a vă îmbunătăți cunoștințele și instrumentele disponibile și limbajul de programare pentru a vă îmbunătăți abilitățile practice. Dacă mai aveți întrebări legate de curs, trimiteți-ne un mesaj. Echipa noastră vă va contacta.