Desenvolvimento & Java 10 Dec 2007 18:19

Covariant, o que é e para que serve?!?

No decorrer dos meus estudos, me deparei com esse tal de covariant, segue o exercício (pág 17, Certificação Java 5):

5. O tipo de retorno Covariant permite o método da subclasse retornar uma ______(subclasse/superclasse) do tipo de retorno do método da superclasse.

Resposta (pág 20): “subclasse”. Explicação: “Tipo de retorno Covariant” é uma nova característica (Java 5) que permite a você declarar um tipo de retorno que seja subclasse do tipo de retorno do método sobrescrito.

Confuso não!?!?

Vamos entender então.

Vamos supor que vc faça uma classe como a seguinte:

class A { };
class B extends A {};

Agora, uma classe Super, que contém um método que retorna um objeto tipo A:

class Super {
    public A nomeMetodo() {
        return new A();
    }
}

Agora, vamos definir uma classe Sub, que extende Super. No Java até 1.4, você não pode sobrescrever o método “nomeMetodo()”, mudando seu tipo de retorno. O código a seguir não compilaria:

class Sub {
    public B nomeMetodo() {
        return new B();
    }
}

E é exatamente isso que agora, no Java 5, funciona. Mas há uma condição: o tipo de retorno do método sobrescrito deve ser do mesmo nível, ou filho, do tipo de retorno do método da classe pai, ou seja, o método “nomeMetodo()” da classe Sub só funciona, no Java 5, porque a classe B extende a classe A. Portanto, agora é possível sobrescrever um método herdado e alterar seu tipo de retorno, desde que seja filho do tipo de retorno da classe pai.

Bom, é isso ae. Espero ter sanado as dúvidas sobre mais essa nova implementação do Java 5. Para você que ficou com alguma dúvida, segue o link da SUN que trata desse assunto: AQUI.

Adicione ao del.icio.us

Trackback This Post | Inscreva-se no RSS Feed dos comentátios

Responda