@Override alguem me explica oque isso faz? =x

3 respostas
J

@Override

me deparei com este codigo em uma estrutura que achei na internet,

alguem sabe me dizer qual a função desse “treco” =x

3 Respostas

ViniGodoy

Ele indica que sua intenção é sobrescrever um método classe pai.

Por exemplo:

public class SuaClasse {
   @Override
   public String toString() {
      return "Teste";
   }
}

Nesse código, sobrescrevemos o método toString() da classe object. Note que funcionaria sem o override.

Agora, vamos supor que nós digitemos errado:

public class SuaClasse {
   @Override
   public String toEstringue() {
      return "Teste";
   }
}

Agora, o código não compila. O java vai dizer que não existe nenhum método "toEstringue" na classe object, já que ele sabe (através do Override) que estamos tentando sobrescrever um método existente, e não criar um novo.

É bastante útil também quando você está sobrescrevendo métodos das suas próprias classes.

Um erro comum ocorre quando você cria um método no pai e sobrescreve-o nos filhos: O tempo passa e você decide renomear o método pai. Sem o override, você corria o risco de renomear em alguns filhos e esquecer de outros. O java não acusaria erro, pois ele pensaria que no filho vc está criando novos métodos.

Por exemplo:
class Pai {
   //O nome antigo era getInteger
   public Integer getInt() {
      return 1;
   }
}

class Filho extends Pai {
   public Integer getInteger() {
      return 1;
   }
}

Note que aqui um usuário esqueceu de mudar de getInteger para getInt. Não há problema nenhum com esse código. O java entende que o filho tem dois métodos. Mas essa não era a intenção original do desenvolvedor.
Se o filho tivesse marcado com @Override, na hora de compilar, o java avisaria "O filho está usando um método chamado getInteger, que não existe na classe Pai", e então você logo veria que esqueceu de renomear de getInteger para getInt no filho.

}

Roger10

Muita boa a explicação, eu tinha essa dúvida também.

R

é sempre considerei desnecessário de fato.
mas é uma garantia então. porém em programas pequenos realmente não é necessário.

Criado 1 de dezembro de 2010
Ultima resposta 2 de dez. de 2011
Respostas 3
Participantes 4