Typecasting és un dels conceptes més importants que tracta bàsicament de la conversió d'un tipus de dades a un altre de forma implícita o explícita. En aquest article, es parla del concepte de tipografia per a objectes.
Igual que els tipus de dades, els objectes també es poden tipificar. Tanmateix, als objectes, només hi ha dos tipus d'objectes, és a dir, l'objecte pare i l'objecte fill. Per tant, la tipografia d'objectes significa bàsicament que un tipus d'objecte (és a dir) fill o pare a un altre. Hi ha dos tipus de tipografia. Ells són:
convertir de cadena a nombre enter java
- Upcasting: Upcasting és el typecasting d'un objecte fill a un objecte pare . El upcasting es pot fer de manera implícita. L'upcasting ens dóna la flexibilitat d'accedir als membres de la classe pare, però no és possible accedir a tots els membres de la classe secundaris mitjançant aquesta funció. En lloc de tots els membres, podem accedir a alguns membres especificats de la classe fill. Per exemple, podem accedir als mètodes anul·lats. Downcasting: De la mateixa manera, downcasting significa la tipificació d'a objecte pare a un objecte fill . La reducció no pot ser implícita.
La imatge següent il·lustra el concepte d'upcasting i downcasting:

Exemple: Que hi hagi una classe de pares. Hi pot haver molts fills d'un pare. Tinguem en compte un dels nens. El fill hereta les propietats del pare. Per tant, hi ha una relació és-una entre el fill i el pare. Per tant, el nen pot ser implícita upcasted al pare. Tanmateix, un pare pot heretar o no les propietats del fill. No obstant això, podem llançar amb força un pare a un fill que es coneix com rebaixant . Després de definir explícitament aquest tipus de càsting, el compilador comprova en segon pla si aquest tipus de càsting és possible o no. Si no és possible, el compilador llança una ClassCastException .
Entenem el codi següent per entendre la diferència:
Java
generador de nombres aleatoris en c
// 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(); ->error de temps de compilació> >// Downcasting Explicitly> >Child c = (Child)p;> >c.id =>1>;> >System.out.println(c.name);> >System.out.println(c.id);> >c.method();> >}> }> |
>
>Sortida
techcodeview.com Method from Child techcodeview.com 1 Method from Child>
Una figura il·lustrativa del programa anterior:

A partir de l'exemple anterior podem observar els següents punts:
el meu flixer
- Sintaxi de Upcasting:
Parent p = new Child();>
- L'upcasting es farà internament i, a causa de l'upcasting, l'objecte només pot accedir als membres de la classe pare i als membres especificats de la classe secundaria (mètodes anul·lats, etc.), però no a tots els membres.
// This variable is not // accessible p.id = 1;>
- Sintaxi de Downcasting:
Child c = (Child)p;>
- La baixada s'ha de fer externament i, a causa de la baixada, un objecte fill pot adquirir les propietats de l'objecte pare.
c.name = p.name; i.e., c.name = 'techcodeview.com'>