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 parametrilor ș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.
Vedeți exemplul de supraîncărcare a metodei de mai jos:
clasa Aritmetica {
int cub (int x) {
returnează x * x * x;
}
cub dublu (x dublu) {
returnează x * x * x;
}
float cub (float x) {
returnează x * x * x;
}
public static void main (String [] args) {
Arithmetic myMultiplication = new Arithmetic ();
System.out.println ("Cubul lui 5 este" + myMultiplication.cube (5));
System.out.println ("Cubul 5.0 este" + myMultiplication.cube (5.0));
System.out.println ("Cubul de 0,5 este" + myMultiplication.cube (0,5));
}
}
Ieșire:
Cubul de 5 este 125
Cubul de 5.0 este 125.0
Cubul de 0,5 este 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ă.
clasă Cont {
mesaj public nul () {
System.out.println ("
Vă mulțumim că ați deschis un cont la noi! ");
}
public static main main (String args []) {
Cont myAccount = Cont nou ();
Economii mySavings = new Savings ();
FixedDeposit myFixedDepo = new FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
clasa Economii extinde Contul {
mesaj public nul () {
System.out.println ("
Vă mulțumim că ați deschis un cont de economii la noi! ");
}
}
clasa FixedDeposit extinde Contul {
mesaj public nul () {
System.out.println ("
Vă mulțumim că ați deschis la noi un cont de depozit fix! ");
}
}
Ieșire:
Vă mulțumim pentru deschiderea unui cont la noi!
Vă mulțumim că ați deschis un cont de economii la noi!
Vă mulțumim pentru deschiderea unui cont de depozit fix cu noi!
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ă menționat 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.
mesaj nul final () {
System.out.println ("
Vă mulțumim că ați deschis un cont la noi! ");
}
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 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.
clasa Animal {
mutare publică nulă () {
System.out.println ("
Mă pot mișca. ");
}
}
Mai jos este o subclasă, numită Peşte, care suprascrie mișcare():
clasa Pește extinde Animal {
mutare publică nulă () {
System.out.println ("
Pot înota. ");
super.move ();
}
public static main main (String args []) {
Fish Tilapia = pește nou ();
Tilapia.move ();
}
}
Ieșire:
Pot înota.
Mă pot mișca.
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 v-ați simplificat codul... Acum ești pe cale să obții o lecție adevărată despre 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, lista dvs. de învățare Java ar trebui să funcționeze cu tablouri. Sunt structuri de date importante utilizate pentru a stoca loturi de puncte de date.
Învățați Java? Permiteți matricelor să vă gestioneze datele cu ușurință.
Citiți în continuare
- Programare
- Java
- Tutoriale de codare
Jerome este scriitor de personal la MakeUseOf. El acoperă articole despre programare și Linux. El este, de asemenea, un entuziast criptografic și este mereu la curent cu industria criptografică.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.