me deparei com este codigo em uma estrutura que achei na internet,
alguem sabe me dizer qual a função desse “treco” =x
me deparei com este codigo em uma estrutura que achei na internet,
alguem sabe me dizer qual a função desse “treco” =x
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.
}
Muita boa a explicação, eu tinha essa dúvida também.
é sempre considerei desnecessário de fato.
mas é uma garantia então. porém em programas pequenos realmente não é necessário.