A medida que el oído golpea los tímpanos "anulando", rápidamente llegamos a saber que se puede hacer en virtud de diferentes tipos de datos o argumentos pasados a una función, lo que un programador aprendió inicialmente mientras aprende. polimorfismo en java. Antes de JDK 5.0 no era posible anular un método cambiando el tipo de retorno. Cuando anulamos un método de clase principal, los tipos de argumentos de nombre y el tipo de retorno del método anulado en la clase secundaria deben ser exactamente los mismos que los del método de clase principal. Se decía que el método primordial era invariante con respecto al tipo de devolución.
A partir de la versión 5.0 de Java, es posible tener diferentes tipos de retorno para un método primordial en la clase secundaria, pero el tipo de retorno del hijo debe ser un subtipo del tipo de retorno del padre. El método predominante se convierte en variante con respecto al tipo de devolución.
El tipo de retorno covariante se basa en el Principio de sustitución de Liskov .
Ahora, geeks, deben preguntarse por qué usarlo, para lo cual enumeraremos las ventajas de la siguiente manera:
- Ayuda a evitar conversiones de tipos confusas presentes en la jerarquía de clases y, por lo tanto, hace que el código sea legible, utilizable y mantenible.
- Tenemos la libertad de tener tipos de retorno más específicos al anular métodos.
- Ayuda para prevenir ClassCastExceptions en tiempo de ejecución en devoluciones
Nota: Si intercambiamos los tipos de retorno Base y Derivado, el programa anterior no funcionará. por favor vea este programa por ejemplo.
Ejemplo Dos clases utilizadas para tipos de devolución.
Java// Java Program to Demonstrate Different Return Types // if Return Type in Overridden method is Sub-type // Class 1 class A { } // Class 2 class B extends A { } // Class 3 // Helper class (Base class) class Base { // Method of this class of class1 return type A fun() { // Display message only System.out.println('Base fun()'); return new A(); } } // Class 4 // Helper class extending above class class Derived extends Base { // Method of this class of class1 return type B fun() { // Display message only System.out.println('Derived fun()'); return new B(); } } // Class 5 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating object of class3 type Base base = new Base(); // Calling method fun() over this object // inside main() method base.fun(); // Creating object of class4 type Derived derived = new Derived(); // Again calling method fun() over this object // inside main() method derived.fun(); } }
Producción:
Base fun() Derived fun()
Crear cuestionario