Proces konverzie jedného dátového typu na iný je známy ako Typové odlievanie a Upcasting a Downcasting je typ typového obsadenie objektu. V jazyku Java môže byť objekt tiež typizovaný ako dátové typy. Rodič a Dieťa objekty sú dva typy objektov. Pre objekt sú teda možné dva typy typového obsadenie, t.j. Rodič dieťaťu a Dieťa rodičovi alebo môže povedať Upcasting a Downcasting .
In Java , objekt môže byť tiež typizovaný ako dátové typy. Rodič a Detské predmety sú dva typy objektov. Pre objekt sú teda možné dva typy typového obsadenie, t.j. Rodič dieťaťu a Dieťa rodičovi alebo môže povedať Upcasting a Downcasting .
Typové odlievanie sa používa na zabezpečenie toho, či premenné sú správne spracované funkciou alebo nie. In Upcasting a Downcasting , typujeme podriadený objekt k rodičovskému objektu a rodičovský objekt k podriadenému objektu súčasne. Upcasting môžeme vykonávať implicitne alebo explicitne, ale downcasting nemôže byť implicitne možný.
Poďme sa ponoriť do hĺbky oboch týchto typov odlievania objektov:
operátor zvyšku pythonu
1) Upcasting
Upcasting je typ typového odlievania objektov, v ktorom a detský predmet je typizovaný na a objekt rodičovskej triedy . Pomocou funkcie Upcasting môžeme ľahko pristupovať k premenným a metódam rodičovskej triedy k triede podriadenej. Tu nemáme prístup ku všetkým premenným a metóde. Pristupujeme len k niektorým špecifikovaným premenným a metódam podradenej triedy. Upcasting je tiež známy ako Zovšeobecnenie a Rozšírenie .
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(); } }
Výkon:
2) Downcasting
Upcasting je ďalším typom typového obsadzovania objektov. V Upcasting priradíme objekt odkazu nadradenej triedy podradenej triede. V Jave nemôžeme priradiť objekt odkazu nadradenej triedy k podradenej triede, ale ak vykonáme downcasting, nedostaneme žiadnu chybu pri kompilácii. Keď ho však spustíme, vyhodí „ClassCastException“ . Teraz ide o to, ak downcasting nie je možný v Jave, prečo to potom kompilátor umožňuje? V jazyku Java nám niektoré scenáre umožňujú vykonávať downcasting. Tu sa na objekt podtriedy odkazuje rodičovská trieda.
tabuľku reakcií
Nižšie je uvedený príklad downcastingu, v ktorom sú vysvetlené platné aj neplatné scenáre:
DowncastingExample.java
linuxové príkazy, ktoré
//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(); } }
Výkon:
Prečo potrebujeme Upcasting a Downcasting?
V Jave používame len zriedka Upcasting . Používame ho, keď potrebujeme vyvinúť kód, ktorý sa zaoberá iba nadradenou triedou. Downcasting sa používa, keď potrebujeme vytvoriť kód, ktorý pristupuje k správaniu triedy dieťaťa.
Rozdiel medzi Upcasting a Downcasting
Toto sú nasledujúce rozdiely medzi Upcasting a Downcasting:
Áno nie | Upcasting | Downcasting |
---|---|---|
1. | Podriadený objekt je pretypovaný na rodičovský objekt. | Odkaz na objekt rodičovskej triedy sa odovzdá podradenej triede. |
2. | Upcasting môžeme vykonávať implicitne alebo explicitne. | Implicitne downcasting nie je možný. |
3. | V podradenej triede môžeme pristupovať k metódam a premenným rodičovskej triedy. | Je možné pristupovať k metódam a premenným oboch tried (rodičov a detí). |
4. | Máme prístup k niektorým špecifikovaným metódam detskej triedy. | Všetky metódy a premenné oboch tried sú prístupné vykonaním downcastingu. |
5. | Rodič p = nový rodič () | Rodič p = nové dieťa() Dieťa c = (Child)p; |