java covariant
java covariant

En Java, cuando hacemos referencia a un tipo covariant nos referimos a un tipo de dato hijo del que nos referimos. Este término se suele usar cuando se habla del tipo de dato que se devuelve en un método que está sobrescribiendo a otro. Una de las reglas de la sobrescritura dicta que un método sobrescrito debe de tener un tipo de retorno igual o más restrictivo (covariant). Pero, ¿Qué es eso de más restrictivo? Veamos un ejemplo:

//Vivienda.java
public class Automovil {}

//Chalet.java
public class AutomovilTerrestre extends Automovil {
    public Automovil crearAuto(){ return null; }
}

//Casa.java
public class Coche extends AutomovilTerrestre {
    public AutomovilTerrestre crearAuto(){ return null; }
}

//Main.java
public class Main extends Coche {

    public static void main(String[] args){
        Main m = new Main();
        Coche c = m.crearAuto();
    }

    public Coche crearAuto(){}
}

Aquí finalmente es la clase tipo Main (Hija de Coche, Nieta de AutomovilTerrestre, ..) la que ha devuelto un subtipo (Coche) ya que lo ha sobrescrito por una subclase de la misma.

Más información: Oracle.com

Java Básico: Tipos de retorno covariant
Etiquetado en:                

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Social media & sharing icons powered by UltimatelySocial