logo

Upcasting un downcasting Java

Viena datu veida konvertēšanas process citā datu tipā ir pazīstams kā Rakstu apraide un Upcasting un Nolaišana ir objekta tipa apraides veids. Programmā Java objektu var ievadīt arī kā datu tipus. Vecāks un Bērns objekti ir divu veidu objekti. Tātad objektam ir iespējami divu veidu rakstīšanas veidi, t.i., Vecāks bērnam un Bērns vecākiem vai var teikt Upcasting un Nolaišana .

In Java , objektu var arī iespiest kā datu tipus. Vecāks un Bērnu priekšmeti ir divu veidu objekti. Tātad objektam ir iespējami divu veidu rakstīšanas veidi, t.i., Vecāks bērnam un Bērns vecākiem vai var teikt Upcasting un Nolaišana .

Rakstu apraide tiek izmantots, lai nodrošinātu, vai funkcija pareizi apstrādā mainīgos. In Upcasting un Nolaišana , mēs rakstām bērna iebildums pret vecāku objektu un vecāks iebilst pret bērnu objektu vienlaikus. Mēs varam veikt augšuplādēšanu netieši vai tieši, bet lejupslīde nevar būt netieša.

Upcasting un downcasting Java

Iedziļināsimies abu šo objektu liešanas veidos:

iteratora java karte

1) Upcasting

Upcasting ir objektu tipa apraides veids, kurā a bērna objekts ir drukāts uz a vecāku klases objekts . Izmantojot Upcasting, mēs varam viegli piekļūt vecākklases mainīgajiem un metodēm bērnklasei. Šeit mēs nepiekļūstam visiem mainīgajiem lielumiem un metodei. Mēs piekļūstam tikai dažiem norādītajiem bērnklases mainīgajiem un metodēm. Upcasting ir pazīstams arī kā Vispārināšana un Paplašināšana .

UpcastingExample.java

java pupiņas
 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(); } } 

Izvade:

Upcasting un downcasting Java

2) pazemināšana

Upcasting ir vēl viens objektu tipa apraides veids. Programmā Upcasting mēs piešķiram vecākklases atsauces objektu bērnklasei. Programmā Java mēs nevaram piešķirt vecākklases atsauces objektu bērnklasei, taču, veicot lejupslīdi, mēs nesaņemsim kompilēšanas laika kļūdu. Tomēr, kad mēs to palaižam, tas izmet “ClassCastException” . Tagad runa ir par to, ja Java nav iespējama lejupslīde, tad kāpēc kompilators to atļauj? Programmā Java daži scenāriji ļauj mums veikt lejupslīdi. Šeit apakšklases objektu atsaucas vecākklase.

Tālāk ir sniegts lejupslīdes piemērs, kurā ir izskaidroti gan derīgie, gan nederīgie scenāriji.

DowncastingExample.java

 //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(); } } 

Izvade:

Upcasting un downcasting Java

Kāpēc mums ir nepieciešama augšuplāde un lejupslīde?

Java mēs reti lietojam Upcasting . Mēs to izmantojam, ja mums ir jāizstrādā kods, kas attiecas tikai uz vecāku klasi. Nolaišana tiek izmantots, ja mums ir jāizstrādā kods, kas piekļūst bērnu klases uzvedībai.

multipleksors
Upcasting un downcasting Java

Atšķirība starp augšuplādēšanu un lejupslīdi

Šīs ir šādas atšķirības starp augšuplādēšanu un lejupslīdi:

Jā nē Upcasting Nolaišana
1. Pakārtotais objekts tiek ievadīts vecākobjektā. Vecākās klases objekta atsauce tiek nodota bērnklasei.
2. Mēs varam veikt Upcasting netieši vai tieši. Netieša pazemināšana nav iespējama.
3. Bērnu klasē mēs varam piekļūt vecākklases metodēm un mainīgajiem. Var piekļūt abu klašu (vecāku un bērnu) metodēm un mainīgajiem.
4. Mēs varam piekļūt dažām norādītām bērnu klases metodēm. Visām abu klašu metodēm un mainīgajiem var piekļūt, veicot lejupslīdi.
5. Vecāks p = jauns vecāks() Vecāks p = jauns bērns ()
Bērns c = (Bērns)p;