Typecasting es la evaluación del valor de un tipo de datos primitivo a otro tipo. En Java, hay dos tipos de conversión, a saber, conversión hacia arriba y hacia abajo, de la siguiente manera:
- Upcasting es convertir un subtipo en un supertipo en dirección ascendente hacia el árbol de herencia. Es un procedimiento automático para el cual no se realizan esfuerzos para hacerlo donde un objeto de subclase es referido por una variable de referencia de superclase. Se puede relacionar con el polimorfismo dinámico.
- Conversión implícita significa encasillamiento de clase realizado por el compilador sin sintaxis de conversión.
- Casting explícito significa encasillado de clase realizado por el programador con sintaxis cast.
- Downcasting se refiere al procedimiento cuando el tipo de subclase se refiere al objeto de la clase principal y se conoce como downcasting. Si se realiza directamente, el compilador da un error ya que ClassCastException se lanza en tiempo de ejecución. Solo se puede lograr con el uso del operador instanceof . El objeto que ya está hacia arriba, ese objeto solo se puede realizar hacia abajo.
Para realizar la conversión de tipo de clase, debemos seguir estas dos reglas de la siguiente manera:
- Las clases deben ser «IS-A-Relationship»
- Un objeto debe tener la propiedad de una clase en la que se va a lanzar.
Implementación:
(A) Reenvío
Ejemplo 1
Java
// Importing input output classes import java.io.*; // Class 1 // Parent class class Parent { // Function void show() { // Print message for this class System.out.println("Parent show method is called"); } } // Class 2 // Child class class Child extends Parent { // Overriding existing method of Parent class @Override // Same Function which will override // existing Parent class function void show() { // Print message for this class System.out.println("Child show method is called"); } } // Class3 // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating a Parent class object // but referencing it to a Child class Parent obj = new Child(); // Calling the show() method to execute obj.show(); } }
Child show method is called
Explicación de la salida: aquí se llama al objeto de la clase principal, pero se hace referencia al objeto de la clase del hijo. Por lo tanto, uno puede relacionar esto con el polimorfismo dinámico o la anulación de funciones.
(B) Reducción
Ejemplo 2
Java
// Java Program to illustrate Downcasting // Importing input output classes import java.io.*; // Class 1 // Parent class class Vehicles { } // Class 2 // Child class class Car extends Vehicles { static void method(Vehicles v) { // if (v instanceof Car) { // Downcasting Car c = (Car)v; // Display message System.out.println("Downcasting performed"); } } // Main driver method public static void main(String[] args) { // Creating an object of Vehicle class // and referring it to Car class Vehicles v = new Car(); Car.method(v); } }
Downcasting performed
NOTA: Sin realizar upcast si intentamos downcast, se lanzará ClassCastException.
- Es una excepción de tiempo de ejecución o una excepción no verificada.
- Es una clase, presente en el paquete java.lang .
- Se puede evitar usando un operador conocido como ‘instancia de’.
Ejemplo 3
Java
// Java Program showing ClassCastException // Importing input output classes import java.io.*; // Class 1 // Parent class/ Member class class Member { // Member variable of this class String name; long phone; // Member function of this class void chat() { // Print message of Member/ Child class System.out.println( name + " : chatting in whatsapp group"); } } // Class 2 // Child class/ Admin class class Admin extends Member { // Member function of this class void addUser() { // Print message of Admin/ Parent class System.out.println( name + " : adding a new user in whatsapp group"); } } // Class3 - Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object Ad Member mem = new Admin(); // Upcasting access only general property of // superclass // Custom entry for Member class mem.name = "Sneha"; mem.phone = 9876543210l; // Calling function mem.chat(); Admin ad = (Admin)mem; // Downcast to access specific property of subclass ad.addUser(); } }
Sneha : chatting in whatsapp group Sneha : adding a new user in whatsapp group
Publicación traducida automáticamente
Artículo escrito por devefullstack404 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA