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.
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ö:
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ö:
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ä.
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; |