public double getBonificacao()Não entendi direito, se estou sobrescrevendo o método acima nas classes filhas porque não tem que usar a anotação @override ???
public double getBonificacao()Não entendi direito, se estou sobrescrevendo o método acima nas classes filhas porque não tem que usar a anotação @override ???
Bom dia Oscar, tudo bem?
A anotação @Override é uma anotação de segurança que ajuda o compilador a garantir que um método está sobrecscrevendo outro. Ela serve como um acordo entre as classes mãe e filha, em que a filha pode ter certeza de que a a mãe tem um método com a assinatura devida.
Por exemplo, se você tiver as classes
class Foo {
public void foo() {
System.out.println("Foo");
}
}
class Bar extends Foo {
@Override
public void foo() {
System.out.println("Bar");
}
}A classe Bar está sobrescrevendo o método foo da classe Foo, e se você instanciar uma Bar e chamar o método foo , vai receber a saída Bar:
new Bar().foo();
> BarO que o @Override faz é garantir que a classe mãe Foo tenha o método foo(). Se isso não ocorrer, o código não compila:
class Foo {
public void bar() {
System.out.println("Foo");
}
}
class Bar extends Foo {
@Override
public void foo() {
System.out.println("Bar");
}
}O código acima não compila pois a classe Bar diz que está sobrescrevendo o método foo mas este não existe.
Já o código abaixo compila e roda normalmente, pois não há nenhum acordo entre as classes.
class Foo {
public void foo() {
System.out.println("Foo");
}
}
class Bar extends Foo {
public void foo() {
System.out.println("Bar");
}
}Este último abaixo compila e roda normalmente, porém com um detalhe: a classe Bar tem acesso ao dois métodos!
class Foo {
public void bar() {
System.out.println("Foo");
}
}
class Bar extends Foo {
public void foo() {
System.out.println("Bar");
}
}
Bar instance = new Bar();
instance.foo();
> Bar
instance.bar();
> FooIsso ocorre pois ambos os métodos existem, e não existe nenhum contrato dizendo que é necessário existir um método foo na classe Foo.
Deu pra entender? Espero que sim, mas se ficou confuso não hesite em perguntar mais!
Um abraço e bons estudos!