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
