Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resultado zero

Olá! Fiz duas interfaces - uma para definir um sistema de bonificação e a outra para definir o sistema de salários.

Optei por interfaces já que gostaria de treinar essa possibilidade - além do mais não queria deixar a cargo da classe "funcionário" uma função que não faz muito sentido com sua sintaxe.

O problema surge quando vou imprimir o salário dos meus funcionários:

public class teste {


public static void main(String[] args) {

Gerente brenoVale = new Gerente ();
System.out.println(brenoVale.getSalario());

}
}

O resultado acaba por ser = 0.0

Segue abaixo minhas duas interfaces, minha classe Funcionário e também minha classe Gerente.

Sistema de Bonificação (interface)

public abstract interface SistemaDeBonificacao  {


public double bonificacao ();

}     

Sistema de Salários (interface)

public abstract interface SistemaDeSalarios {


public double salario ();

}

Classe Funcionário

public abstract class Funcionario extends FuncoesBancarias{

private String cpf;
private String nome;
private String cargo;
private String endereco;
private String telefone;
private double salario;


public String getCpf() {
    return cpf;
}
public void setCpf(String cpf) {
    this.cpf = cpf;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getCargo() {
    return cargo;
}
public void setCargo(String cargo) {
    this.cargo = cargo;
}
public String getEndereco() {
    return endereco;
}
public void setEndereco(String endereco) {
    this.endereco = endereco;
}
public String getTelefone() {
    return telefone;
}
public void setTelefone(String telefone) {
    this.telefone = telefone;
}
public double getSalario() {
    return salario;
}

}

E minha classe Gerente:

public class Gerente extends Funcionario implements SistemaDeSalarios,                      
     SistemaDeBonificacao {


public double salario () {
    return super.getSalario() + 9000;

}

public double bonificacao () {
    return super.getSalario() * 1;
}

}

Por qual razão, nessas condições, o resultado é zero?

Qual deveria ser meu código para o resultador ser os 9.000 desejados?

Grato desde já!

1 resposta
solução!

Você está fazendo:

System.out.println(brenoVale.getSalario());

Logo, será chamado o método getSalario da classe Funcionario.

O método de gerente é o salario():

public double salario () {
    return super.getSalario() + 9000;

}

Se você chamar o gerente.salario() vai dar os 9000 que você quer

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software