Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro de aplicação de método


class TotalizadorDeBonus{
    private double total = 0; 
    public void adiciona(Funcionario f){
        total += f.getBonus();
    }

    public double getTotal(){
        return this.total;
    }
}

`
         TotalizadorDeBonus totalizador = new TotalizadorDeBonus();
         totalizador.adiciona(joao);
         totalizador.adiciona(joaquim);

         System.out.println(totalizador.getTotal());

O código apresenta o seguinte erro : TesteFuncionario.java:14: error: method adiciona in class TotalizadorDeBonus cannot be applied to given types; totalizador.adiciona(joaquim); ^ required: Funcionario found: Gerente reason: actual argument Gerente cannot be converted to Funcionario by method invocation conversion 1 error

4 respostas

Rafael, tudo bem ?

Cara acredito que você esqueceu de falar que seu Gerente é um Funcionário, o que com que o tipo passado não seja aceito utilizando polimorfismo.

Dá uma olhadinha nas suas classes e fala para gente se conseguiu resolver, caso contrário pode falar que estou aqui para te ajudar.

Abraços

Não consegui resolver, eu criei uma classe Funcionario e falei que a classe Gerente herda os parametros dela, usando o extends.


class Funcionario2{
    private String nome;
    protected double salario;

    public void setSalario(double salario){
        this.salario = salario;
    }

    public double getBonus(){
       return this.salario * 0.2;
    }
}

class Gerente extends Funcionario2 {

    public double getBonus(){
      return this.salario * 0.3;
    }
solução!

Rafael,

Repara o seguinte :

class TotalizadorDeBonus{
    private double total = 0; 
    public void adiciona(Funcionario f){
        total += f.getBonus();
    }

    public double getTotal(){
        return this.total;
    }
}

Aqui você recebe um funcionário, correto ?

Se você olhar agora seu gerente :

class Gerente extends Funcionario2 {

    public double getBonus(){
      return this.salario * 0.3;
    }

Seu Gerente é um Funcionario2 e não um Funcionario, os tipos são diferentes.

Cara é verdade, não havia reparado nisso. Realizei a alteração e ele executou perfeitamente. Obrigado !