Polimorfism în Java: Cum să suprasolicitați sau să suprascrieți metodele

Polimorfism în Java: Cum să suprasolicitați sau să suprascrieți metodele

Supraîncărcarea și suprascrierea metodei sunt cele două moduri în care Java demonstrează polimorfismul. Polimorfismul provine dintr-o combinație de două cuvinte grecești: „poli” care înseamnă mulți și „morph”, care înseamnă formă. Prin urmare, polimorfismul permite metodelor să capete mai multe forme.





Urmați acest ghid pentru a afla cum să suprasolicitați sau să suprascrieți metodele în Java.





Ce este supraîncărcarea metodelor?

„Supraîncărcarea metodelor” se referă la definirea diferitelor metode într-o clasă cu același nume. Metodele trebuie să aibă semnături diferite. O semnătură de metodă este combinația dintre numele și lista parametrilor unei metode. Nu include tipul de returnare.





Compilatorul știe ce metodă să utilizeze verificând tipul, numărul de parametri și ordinea în care sunt așezați.

Legate de: Explorarea moștenirii în limbajul de programare Java



Supraîncărcarea metodei demonstrează polimorfismul în timpul compilării. Polimorfismul în timp de compilare înseamnă că compilatorul Java leagă un obiect de funcționalitatea sa în timpul rulării. Compilatorul verifică semnăturile metodei pentru a realiza acest lucru.

Acest tip de polimorfism este, de asemenea, cunoscut sub numele de legare statică sau timpurie.





Consultați exemplul de supraîncărcare a metodei de mai jos:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Ieșire:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

Codul de mai sus arată cum puteți obține un cub de diferite tipuri ( int , dubla , pluti ) folosind aceeași metodă.

În general, supraîncărcarea metodelor este utilizată pentru a defini metode similare cu diferite tipuri de parametri.

Ce este metoda suprascriere?

Aceasta se referă la o implementare diferită a unei metode într-o subclasă. Metoda trebuie să fi fost deja definită în clasa părinte.

Metoda suprascriere (adică cea din subclasă) trebuie să aibă aceeași semnătură de metodă ca cea din superclasă. Tipul de returnare al metodei de suprascriere poate fi același sau un subtip al celui din superclasă.

În general, suprascrierea este utilizată pentru a include o implementare specifică a comportamentului unui obiect în subclasă.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Ieșire:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Exemplul de mai sus arată modul în care metoda mesaj() este suprascris în subclasele Economii și Depozit fix . Vor fi afișate mesaje diferite pentru deținătorii de conturi bancare cu cont de economii și pentru cei cu cont de depozit fix.

Legate de: Ce trebuie să știți despre utilizarea șirurilor în Java

De asemenea, merită remarcat faptul că suprascrierea metodei demonstrează polimorfismul în timpul rulării sau expediere dinamică a metodei. Acest lucru înseamnă că metoda care trebuie apelată este rezolvată la runtime, mai degrabă decât la compilare.

Pentru a evita ca o metodă să fie suprascrisă, utilizați cuvântul cheie final .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Când o subclasă încearcă să o suprascrie, va apărea o eroare de compilare.

În mod ideal, toate metodele apelate în cadrul unui constructor ar trebui să fie final . Aceasta este pentru a evita orice schimbări neintenționate care ar putea fi cauzate de subclasele.

Uneori, poate fi necesar să accesați o metodă suprascrisă în cadrul metodei suprascriere. Puteți utiliza cuvântul cheie super urmat de operatorul punct ( . ) și numele metodei într-un astfel de caz.

Luați în considerare superclasa Animal .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Mai jos este o subclasă, numită Peşte , care suprascrie mutare() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Ieșire:

computerul nu se va conecta la wifi Windows 10
I can swim.
I can move.

Când suprascrieți o metodă, trebuie să fiți atenți și la modificatorul de acces utilizat. Modificatorul din subclasă ar trebui să aibă același nivel de vizibilitate sau mai mare decât în ​​clasa de bază. De exemplu, dacă metoda din clasa de bază este definită ca protejat , atunci metoda de suprascriere poate fi protejat sau public .

Cod simplu cu polimorfism

Suprascrierea și supraîncărcarea metodelor sunt importante pentru simplificarea codului, iar codul simplu este o bună practică.

De ce? Imaginați-vă o bază de cod complexă, cu mai multe intrări și ieșiri decât Grand Central Station. Acum imaginați-vă că un bug devastator începe să vă distrugă munca grea în fața ochilor. Trebuie să izolați sursa infecției și trebuie să o faceți rapid.

Noroc, nu ți-ai simplificat codul ... Acum ești pe cale să obții o lecție adevărată de criptografie. Folosirea unor structuri de date eficiente și a face tot ce poți pentru a scurta codul (cum ar fi să ții cont de DRY) este cea mai bună apărare împotriva unei situații ca aceasta.

În continuare, pe lista dvs. de învățare Java ar trebui să lucrați cu tablouri. Sunt structuri de date importante utilizate pentru a stoca loturi de puncte de date.

Acțiune Acțiune Tweet E-mail Cum să creați și să efectuați operațiuni pe tablouri în Java

Învățați Java? Permiteți matricelor să vă gestioneze datele cu ușurință.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Java
  • Tutoriale de codare
Despre autor Jerome Davidson(22 articole publicate)

Jerome este scriitor de personal la MakeUseOf. El acoperă articole despre programare și Linux. El este, de asemenea, un entuziast criptografic și ține mereu la curent industria cripto.

Mai multe de la Jerome Davidson

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona