Métodos Abstratc (abstrato) não precisam de retorno ? Se sim, porque não?
Métodos Abstratc (abstrato) não precisam de retorno ? Se sim, porque não?
Olá Pedro, pense que.. Assim como uma Classe Abstrata (Não pode ser Instanciada) um Método Abstrato nunca será utilizado diretamente ele servirá apenas como um Template (Modelo) para outras classes poderem Sobrescreve-lo tornando-o verdadeiramente utilizável! Você define se ele precisará de um retorno na assinatura como qualquer outro método não abstrato.
Olá Pedro,
Métodos abstratos em relação a assinatura é a mesma coisa do que você já está acostumado nos métodos normais, sendo que a única coisa que irá mudar é a palavra reservada abstract
na assinatura do método para tornar o mesmo como abstrato.
A definição de método abstrato é que ao declarar que um método é abstrato, você não precisa colocar a sua implementação, pois quem herdar da classe que possui o método abstrato, será obrigado a implementar ele. Lembrando que ao declarar algum método da minha classe como abstrato, a classe também precisa ser abstrata, já que a implementação do método deve vir de alguma classe que herda a mesma. Exemplo:
public abstract class Funcionario {
public abstract double calculaBonus();
}
Agora, quem herdar da classe Funcionario
, será obrigado a implementar o método calculaBonus()
através de sobrescrita, assim como acontece quando nós implementamos na nossa classe uma interface, que nada mais é do que uma classe 100% abstrata. Exemplo:
public class Gerente extends Funcionario {
@Override
public double calculaBonus() {
//implementação do método
return ...;
}
}
Espero ter ajudado. Bons estudos.
public abstract class Funcionario {
public abstract double getBonificacao() {
return 244.56;
}
}
Então não teria problema eu escrever o código desta forma no caso retornando um valor?
Pedro,
Nesse caso, quando declaramos que um método é abstrato, ele irá ficar da forma que mandei na resposta anterior, contendo somente sua assinatura (modificador de acesso, tipo do retorno, nome e parâmetros), da mesma forma que fazemos na declaração de métodos nas interfaces. Quem deve fornecer a implementação do método (a lógica que fica dentro do método) é a classe que herdar de Funcionario
, como no exemplo que eu fiz com a classe Gerente
.
Valeu, agora sim eu entendi!!!