polimorfism Java

Polimorfismul este abilitatea de a se opune de a lua o varietate de forme. Cea mai comună utilizare a polimorfism în OOP are loc atunci când referința clasa părinte este folosit pentru a se referi la obiectul de clasă al copilului.

Orice obiect Java care poate trece mai mult de un test este IS-polimorfă. În Java, toate obiectele Java sunt polimorfe, deoarece orice obiect va avea loc, iar testul pentru propriul tip, și pentru clasa Object.

Variabila de control poate fi realocate altor obiecte, cu condiția ca aceasta să nu este declarată definitivă. de control de tip variabilă va determina metodele pe care se poate referi la un obiect.

Să ne uităm la un exemplu.

Acum, cerb este considerată o clasă polimorfă, deoarece are moștenire multiplă. Următoarele sunt adevărate pentru exemplul de mai sus:

Toate trimiterile la d variabilă, o, v, la a se referi la același obiect pe heap Deer.

Metode virtuale:

În această secțiune vă vom arăta modul în care comportamentul metodelor suprascrise în Java vă permite să profite de polimorfism în dezvoltarea claselor.

Am discutat deja redefinirea unei metode în cazul în care clasa copil poate suprascrie o metodă în mamă. Metoda supracomandată, de fapt, ascuns în clasa părinte, și nu este numit în cazul în care clasa de copil nu folosește super-cheie într-o metodă iminentă.

Acum, să presupunem că ne extindem clasa angajaților, după cum urmează:

Acum, să studiați următorul program cu atenție și să încerce să identifice concluzia:

Acest lucru va produce următorul rezultat:

Aici vom crea două obiecte salariu. unul folosind standardul salariu S, iar celălalt de către personalul de asistență e.

In timp ce vyzovas.mailCheck () compilator vede MAILCHECK () în clasa a salariilor în timpul compilării, iar mașina virtuală este MAILCHECK () în clasa de execuție a salariilor.

Call MAILCHECK () la e este destul de diferit, din moment ce e este link-ul de la angajat. Când vidite.mailCheck compilator (), compilatorul vede MAILCHECK metoda () din clasa Employee.

Aici, la momentul compilării, compilatorul utilizat MAILCHECK () în angajatului pentru a verifica această declarație. În timpul rulării, cu toate acestea, JVM este MAILCHECK () în salariul de clasă.