Tipų perdavimas yra viena iš svarbiausių sąvokų, iš esmės susijusi su netiesioginiu arba tiesioginiu vieno duomenų tipo konvertavimu į kitą duomenų tipą. Šiame straipsnyje aptariama objektų tipo formavimo koncepcija.
Kaip ir duomenų tipai, objektai taip pat gali būti perduodami. Tačiau objektuose yra tik dviejų tipų objektai, ty pirminis objektas ir antrinis objektas. Todėl objektų tipas iš esmės reiškia, kad vieno tipo objektas (t. y.) yra vaikas ar tėvas kitam. Yra dviejų tipų spausdinimas. Jie yra:
- Upcasting: Upcasting yra tipo transliavimas antrinio objekto su pirminiu objektu . Perkėlimas gali būti atliekamas netiesiogiai. Perdavimas suteikia mums galimybę lanksčiai pasiekti pirminės klasės narius, tačiau naudojant šią funkciją neįmanoma pasiekti visų antrinių klasės narių. Vietoj visų narių galime pasiekti kai kuriuos nurodytus vaikų klasės narius. Pavyzdžiui, galime pasiekti nepaisytus metodus. Sumažinimas: taip pat sumažinimas reiškia a tipo sumažinimą tėvas prieštarauja antriniam objektui . Sumažinimas negali būti numanomas.
Šis paveikslėlis iliustruoja padidinimo ir sumažinimo sąvoką:

Pavyzdys: Tegul būna tėvų klasė. Vieno iš tėvų vaikų gali būti daug. Atsižvelkime į vieną iš vaikų. Vaikas paveldi tėvų savybes. Todėl tarp vaiko ir tėvų yra ryšys. Todėl vaikas gali būti netiesiogiai pakylėtas tėvui. Tačiau vienas iš tėvų gali paveldėti arba nepaveldėti vaiko nuosavybės. Tačiau mes galime priverstinai perduoti tėvą vaikui, kuris yra žinomas kaip nuleidimas . Po to, kai aiškiai apibrėžiame šį liejimo tipą, kompiliatorius fone patikrina, ar tokio tipo liejimas įmanomas, ar ne. Jei tai neįmanoma, kompiliatorius pateikia ClassCastException .
Supraskime šį kodą, kad suprastume skirtumą:
Java
java if teiginys
// Java program to demonstrate> // Upcasting Vs Downcasting> // Parent class> class> Parent {> >String name;> >// A method which prints the> >// signature of the parent class> >void> method()> >{> >System.out.println(>'Method from Parent'>);> >}> }> // Child class> class> Child>extends> Parent {> >int> id;> >// Overriding the parent method> >// to print the signature of the> >// child class> >@Override> void> method()> >{> >System.out.println(>'Method from Child'>);> >}> }> // Demo class to see the difference> // between upcasting and downcasting> public> class> GFG {> >// Driver code> >public> static> void> main(String[] args)> >{> >// Upcasting> >Parent p =>new> Child();> >p.name =>'techcodeview.com'>;> >//Printing the parentclass name> >System.out.println(p.name);> >//parent class method is overridden method hence this will be executed> >p.method();> >// Trying to Downcasting Implicitly> >// Child c = new Parent(); ->kompiliavimo laiko klaida> >// Downcasting Explicitly> >Child c = (Child)p;> >c.id =>1>;> >System.out.println(c.name);> >System.out.println(c.id);> >c.method();> >}> }> |
>
>Išvestis
ketvirtį versle
techcodeview.com Method from Child techcodeview.com 1 Method from Child>
Aukščiau pateiktos programos iliustracija:

Iš aukščiau pateikto pavyzdžio galime pastebėti šiuos dalykus:
- Atnaujinimo sintaksė:
Parent p = new Child();>
- Perkėlimas bus atliekamas viduje ir dėl atnaujinimo objektui leidžiama pasiekti tik pirminės klasės narius ir antrinės klasės nurodytus narius (nepaisyti metodai ir pan.), bet ne visus narius.
// This variable is not // accessible p.id = 1;>
- Sumažinimo sintaksė:
Child c = (Child)p;>
- Sumažinimas turi būti atliekamas išoriškai ir dėl sumažinimo antrinis objektas gali įgyti pirminio objekto savybes.
c.name = p.name; i.e., c.name = 'techcodeview.com'>