logo

Typecasting en Java

Le transtypage en Java est le processus de conversion d'un type de données en un autre type de données à l'aide de l'opérateur de transtypage. Lorsque vous attribuez une valeur d’un type de données primitif à un autre type, on parle de conversion de type. Pour permettre l'utilisation d'une variable d'une manière spécifique, cette méthode nécessite de demander explicitement au compilateur Java de traiter une variable d'un type de données comme une variable d'un autre type de données.

Syntaxe:



 variableName = () value;>

Types de moulage de caractères

Il existe deux types de conversion de type en Java :

  • Moulage de type élargissant
  • Moulage de type étroit

Moulage de type élargissant

Un type de données inférieur est transformé en un type de données supérieur par un processus appelé conversion de type élargi. La conversion de type implicite et la conversion vers le bas sont quelques noms pour cela. Cela se produit naturellement. Puisqu’il n’y a aucun risque de perte de données, il est sécurisé. La conversion de type élargie se produit lorsque :

  • Le type cible doit être plus grand que le type source.
  • Les deux types de données doivent être compatibles entre eux.

Syntaxe:



larger_data_type variable_name = smaller_data_type_variable;>


Java






// Java program to demonstrate Widening TypeCasting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>10>;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to long> >long> l = i;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to double> >double> d = i;> > >System.out.println(>'Integer: '> + i);> >System.out.println(>'Long: '> + l);> >System.out.println(>'Double: '> + d);> >}> }>

>

tests de logiciels

>

Sortir

Integer: 10 Long: 10 Double: 10.0>

Moulage de type étroit

Le processus de réduction d’un type de données plus volumineux en un type de données plus petit est connu sous le nom de conversion de type restreinte. La conversion ou la conversion de type explicite sont d'autres noms pour cela. Cela ne se produit pas tout seul. Si nous ne le faisons pas explicitement, une erreur de compilation se produira. La conversion de type restrictive n'est pas sûre, car une perte de données peut se produire en raison de la plage plus petite de valeurs autorisées du type de données inférieur. Un opérateur de diffusion assiste dans le processus de diffusion explicite.

Syntaxe:

smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>

Exemple:

Java




// Java Program to demonstrate Narrow type casting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >double> i =>100.245>;> > >// Narrowing Type Casting> >short> j = (>short>)i;> >int> k = (>int>)i;> > >System.out.println(>'Original Value before Casting'> >+ i);> >System.out.println(>'After Type Casting to short '> >+ j);> >System.out.println(>'After Type Casting to int '> >+ k);> >}> }>

>

>

Sortir

Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>

Types de diffusion explicite

Il existe principalement deux types de casting explicite :

  • Upcasting explicite
  • Downcasting explicite

Upcasting explicite

La conversion ascendante est le processus de conversion d'un sous-type en supertype dans la direction ascendante de l'arbre d'héritage. Lorsqu'un objet de sous-classe est référencé par une variable de référence de superclasse, un processus automatique est déclenché sans aucun effort supplémentaire.

Exemple:

Java




// Java Program to demonstrate Explicit Upcasting> import> java.io.*;> > class> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The animal makes a sound'>);> >}> }> > class> Dog>extends> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The dog barks'>);> >}> > >public> void> fetch()> >{> >System.out.println(>'The dog fetches a ball'>);> >}> }> class> GFG {> >public> static> void> main(String[] args)> >{>// Upcasting> >Animal animal =>new> Dog();> >// Calls the overridden method in Dog class> >animal.makeSound();> >// This would give a compile error as fetch() is not> >// a method in Animal class> >// animal.fetch();> >}> }>

>

>

Sortir

The dog barks>

Downcasting explicite

Lorsqu'un type de sous-classe fait référence à un objet de la classe parent, le processus est appelé downcasting. Si cela est effectué manuellement, le compilateur génère une erreur d'exécution ClassCastException. Cela ne peut être fait qu’en utilisant l’opérateur instanceof. Seul le downcast d'un objet déjà upcast est possible.

Exemple:

Java




// Java Program to demonstrate Explicit downcasting> import> java.io.*;> class> Animal {> >public> void> eat()> >{> >System.out.println(>'The animal is eating.'>);> >}> }> > class> Cat>extends> Animal {> >public> void> meow()> >{> >System.out.println(>'The cat is meowing.'>);> >}> }> > class> GFG {> >public> static> void> main(String[] args)> >{> >Animal animal =>new> Cat();> >animal.eat();> > >// Explicit downcasting> >Cat cat = (Cat)animal;> >cat.meow();> >}> }>

>

>

Sortir

The animal is eating. The cat is meowing.>