logo

Upcasting ja Downcasting Javassa

Prosessi yhden tietotyypin muuntamiseksi toiseksi tunnetaan nimellä Typecasting ja Upcasting ja Downcasting on objektityyppilähetyksen tyyppi. Javassa objekti voidaan myös kirjoittaa tietotyyppien tapaan. Vanhempi ja Lapsi objektit ovat kahdenlaisia ​​esineitä. Objektille on siis mahdollista kahden tyyppistä tyyppiä, eli Vanhemmalta lapselle ja Lapsesta vanhemmalle tai osaa sanoa Upcasting ja Downcasting .

Sisään Java , objekti voidaan myös kirjoittaa tietotyyppien tapaan. Vanhempi ja Lapsi esineitä ovat kahden tyyppisiä esineitä. Objektille on siis mahdollista kahden tyyppistä tyyppiä, eli Vanhemmalta lapselle ja Lapsesta vanhemmalle tai osaa sanoa Upcasting ja Downcasting .

Typecasting käytetään varmistamaan, käsitelläänkö funktio muuttujat oikein vai ei. Sisään Upcasting ja Downcasting , kirjoitamme lapsiobjekti yläobjektille ja emoobjekti aliobjektille samanaikaisesti. Voimme suorittaa Upcastingin implisiittisesti tai eksplisiittisesti, mutta downcasting ei voi olla implisiittisesti mahdollista.

Upcasting ja Downcasting Javassa

Sukellaanpa syvälle molempiin tämäntyyppisiin objektien valuihin:

merkintä kuvilla

1) Upcasting

Upcasting on objektityyppilähetys, jossa a lapsiobjekti on kirjoitettu a vanhempi luokan objekti . Upcastingin avulla pääsemme helposti pääluokan muuttujiin ja menetelmiin aliluokkaan. Täällä emme käytä kaikkia muuttujia ja menetelmää. Käytämme vain tiettyjä lapsiluokan muuttujia ja menetelmiä. Upcasting tunnetaan myös nimellä Yleistys ja Laajentuminen .

UpcastingExample.java

 class Parent{ void PrintData() { System.out.println('method of parent class'); } } class Child extends Parent { void PrintData() { System.out.println('method of child class'); } } class UpcastingExample{ public static void main(String args[]) { Parent obj1 = (Parent) new Child(); Parent obj2 = (Parent) new Child(); obj1.PrintData(); obj2.PrintData(); } } 

Lähtö:

Upcasting ja Downcasting Javassa

2) Downcasting

Upcasting on toinen objektityyppilähetys. Upcastingissa määritämme yläluokan viiteobjektin aliluokkaan. Javassa emme voi määrittää yläluokkaviittausobjektia aliluokkaan, mutta jos suoritamme alaslähetyksen, emme saa käännösaikavirhettä. Kuitenkin, kun käytämme sitä, se heittää 'ClassCastException' . Nyt kysymys on siitä, että jos downcasting ei ole mahdollista Javassa, miksi kääntäjä sallii sen? Javassa joissakin skenaarioissa voimme suorittaa alaslähetyksen. Tässä emoluokka viittaa alaluokkaobjektiin.

merkkijono korvaa kaikki javat

Alla on esimerkki alaspäin laskemisesta, jossa sekä kelvolliset että virheelliset skenaariot selitetään:

DowncastingExample.java

merkkijonon muuntaminen päivämääräksi
 //Parent class class Parent { String name; // A method which prints the data of the parent class void showMessage() { System.out.println('Parent method is called'); } } // Child class class Child extends Parent { int age; // Performing overriding @Override void showMessage() { System.out.println('Child method is called'); } } public class Downcasting{ public static void main(String[] args) { Parent p = new Child(); p.name = 'Shubham'; // Performing Downcasting Implicitly //Child c = new Parent(); // it gives compile-time error // Performing Downcasting Explicitly Child c = (Child)p; c.age = 18; System.out.println(c.name); System.out.println(c.age); c.showMessage(); } } 

Lähtö:

Upcasting ja Downcasting Javassa

Miksi tarvitsemme upcastingia ja alaslaskua?

Javassa käytämme harvoin Upcasting . Käytämme sitä, kun meidän on kehitettävä koodi, joka käsittelee vain pääluokkaa. Downcasting käytetään, kun meidän on kehitettävä koodi, joka käyttää lapsiluokan käyttäytymistä.

Upcasting ja Downcasting Javassa

Ero Upcastingin ja Downcastingin välillä

Nämä ovat seuraavat erot Upcastingin ja Downcastingin välillä:

Kyllä ei Upcasting Downcasting
1. Lapsiobjekti kirjoitetaan pääobjektiin. Pääluokkaobjektin viittaus välitetään aliluokkaan.
2. Voimme suorittaa Upcastingin implisiittisesti tai eksplisiittisesti. Epäsuoraan laskeminen ei ole mahdollista.
3. Lapsiluokassa voimme käyttää pääluokan menetelmiä ja muuttujia. Molempien luokkien (vanhemman ja lapsen) metodit ja muuttujat ovat käytettävissä.
4. Voimme käyttää tiettyjä lapsiluokan menetelmiä. Molempien luokkien kaikkiin menetelmiin ja muuttujiin pääsee käsiksi suorittamalla alaslähetys.
5. Vanhempi p = uusi vanhempi() Vanhempi p = uusi lapsi()
Lapsi c = (Lapsi)p;