Ce este upcasting și downcasting în Java? Explicație simplă

Publicat: 2021-01-22

Cuprins

Upcasting și Downcasting în Java

Typecasting în Java se referă la procedura care implică conversia unui tip de date în altul. Acest lucru se poate face atât automat, cât și manual. În timp ce un programator trebuie să facă singur conversia manuală, un compilator este folosit pentru procesul automat. Downcasting și upcasting sunt, în esență, două tipuri de tip de tip obiect.

Obiectele copil și părinte sunt două tipuri distincte de obiecte. Acum, există două moduri cu ajutorul cărora obiectele pot fi inițializate, moștenind ulterior și proprietățile pe care le au clasele copil și părinte. Aceste moduri includ:

  • Copil c = nou Copil(): Accesează toți membrii care fac parte din clasele pentru copii și părinți
  • Parent p = new Child(): Accesează numai membrii clasei părinte, precum și metodele care au fost suprascrise în clasa copil

În esență, castingul de tip Parent to Child este cunoscut sub numele de Upcasting, în timp ce castingul de tip Child to Parent este denumit Downcasting.

Sistemul de tipar este folosit pentru a se asigura ca variabilele să fie procesate de o funcție cu acuratețe sau nu. În timp ce downcastingul nu este posibil implicit, se poate efectua upcasting atât explicit, cât și implicit.

Atât downcasting-ul, cât și upcasting-ul sunt elemente importante ale Java și le permit oamenilor să dezvolte programe complexe folosind o sintaxă simplă. De asemenea, au câteva avantaje mari, cum ar fi gruparea diferitelor obiecte împreună sau polimorfismul.

Învață cursuri online de dezvoltare software 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.

Upcasting

În upcasting, un obiect copil este o tipărire către un obiect de clasă părinte. Prin utilizarea acestui proces, oamenii pot beneficia cu ușurință de acces la metodele și variabilele distincte ale clasei de la părinte la copil. Accesul la doar unele dintre metodele și variabilele particulare ale clasei copil, cum ar fi metodele suprascrise, este necesar în acest proces. În multe cazuri, upcasting-ul se mai numește și extindere și generalizare. Upcasting-ul poate fi efectuat implicit și oferă oamenilor flexibilitatea de a accesa membrii clasei părinte.

Următorul exemplu poate ajuta la o mai bună înțelegere a procesului.

Exemplu: Există o clasă de animale care prezintă diverse clase de animale, peștii fiind unul dintre ele. Acum, presupunând că clasa animalelor este extinsă cu clasa peștilor, ar exista două moduri de moștenire. Moștenirea este unul dintre aspectele cheie ale programării orientate pe obiecte sau POO, care permite unei clase să moștenească caracteristicile alteia. Aceasta implică clasa derivată care este un superset al clasei de bază. S-ar putea să fie mai multe metode prezentate aici decât clasa de bază. În timpul upcast-ului, singurul lucru care se poate întâmpla cu interfața de clasă este că poate ajunge să piardă metode, mai degrabă decât să le câștige. Ca urmare a acestui fapt, compilatorul permite upcasting-ul fără niciun tip de notații speciale sau turnări explicite.

Compoziție vs moștenire

Când vine vorba de programarea orientată pe obiecte, există șanse mari ca cineva să ajungă să creeze și să utilizeze doar metode de ambalare și date împreună într-o clasă, în timp ce ulterior să utilizeze obiectele prezente în acea clasă. Oamenii pot folosi chiar anumite clase existente pentru a dezvolta noi clase cu compoziție. Moștenirea este folosită relativ rar. În timp ce învățarea OPP, chiar dacă moștenirea se concentrează foarte mult, este important ca dezvoltatorii să cunoască utilizarea corectă a acestuia și să nu încerce să-l folosească oriunde pot.

De fapt, trebuie să-l folosești destul de rar, doar pentru scenariile în care moștenirea este de fapt utilă. Printre cele mai simple moduri de a identifica dacă o persoană ar trebui să folosească moștenirea sau compoziția este să se întrebe dacă trebuie să treacă de la noua distribuție la distribuția de bază. În cazul în care upcasting-ul este o necesitate, atunci ar trebui să folosiți moștenirea. Cu toate acestea, dacă nu este o cerință, atunci trebuie să ne oprim în continuare asupra necesității moștenirii.

Doborâre

Downcasting-ul este o altă formă de turnare a tipului de obiect și este folosită în numirea obiectului de referință subclasă la clasa părinte care nu este permisă în Java. Downcast nu este prea greu de înțeles. De exemplu, dacă există o clasă de bază și o clasă care derivă fie indirect, fie indirect din clasa de bază, atunci de fiecare dată când un obiect din tipul clasei de bază trece să fie transformat într-o clasă derivată, se numește downcast. În consecință, conform reducerii, s-ar coborî diagrama de moștenire încercând să ia un obiect de clasă de bază și apoi să-l convertească într-un tip de clasă derivată. Cu toate acestea, este important să rețineți că, pe baza codului care este scris, downcasting poate sau nu are sens.

Pe măsură ce oamenii efectuează sistemul de downcasting, ei nu vor întâlni niciun tip de eroare de compilator. Cu toate acestea, s-ar confrunta cu java.lang.ClassCastException, care este o excepție de rulare. Deci acum se pune întrebarea dacă downcasting-ul nu este posibil în Java, atunci de ce o fac oamenii? Mai simplu spus, downcasting-ul poate fi folosit numai în situații particulare în care obiectul la care face referire clasa părinte aparține unei subclase.

Reducerea poate fi extrem de utilă atunci când se compară un obiect cu altul.

Pentru a verifica dacă un downcasting este valid sau nu, se poate rula

Sistemul getClass() permite dezvoltatorilor să înțeleagă clasa obiectului care este transmis și, ulterior, să o compare cu clasa curentă. În cazul în care nu sunt egale, atunci downcasting nu va fi validă și încercarea acestui proces va fi inutilă. Conceptul de downcasting folosește în principal turnarea super-tipurilor la subtipuri. Un astfel de proces de turnare se face de obicei într-o manieră explicită. Acest lucru implică practic că tipurile de dimensiuni mai mari sunt făcute pentru a se potrivi în mod explicit în tipurile de dimensiuni mici.

Upcasting vs Downcasting

Upcasting și. Downcasting are anumite diferențe foarte particulare. Unele dintre ele au fost subliniate pe scurt în următoarele indicații:

  • În Upcasting, un obiect copil este transformat într-un obiect părinte. Pe de altă parte, referința obiectului clasei părinte ajunge să fie transmisă clasei copil atunci când vine vorba de downcasting.
  • Oamenii pot efectua upcasting atât în ​​mod explicit, cât și implicit, în timp ce downcasting poate fi efectuat doar în mod explicit.
  • În cazul upcasting-ului, oamenii pot accesa variabilele și metodele clasei părinte în clasa copil, dar nu invers. În downcasting, totuși, variabilele și metodele ambelor clase sunt ușor accesibile.
  • Upcasting permite accesul numai la anumite metode de clasă copil. Atât când se efectuează downcasting, toate metodele și variabilele care fac parte din ambele clase sunt făcute accesibile.

Concluzie

Upcasting-ul este folosit rar în Java. În cele mai multe cazuri, oamenii îl folosesc atunci când trebuie să dezvolte un cod care se ocupă doar de clasa părinte. Când vine vorba de dezvoltarea unui cod care oferă acces la comportamentul clasei de copii, tinde să fie folosit downcasting.

Dacă doriți să învățați Java și să obțineți o certificare și în cloud computing, upGrad oferă un program de certificat avansat în cloud computing . Cursul online de 7,5 luni este conceput special pentru profesioniștii care lucrează pentru a-i ajuta să obțină intrarea în roluri de cloud computing.

Deveniți un dezvoltator Full Stack

APLICĂ ACUM LA MASTERUL DE INFORMATICĂ DE LA LIVERPOOL JOHN MOORES