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

Dúvida no Ex. 2 da Aula 5 - Modificadores de acesso

Olá! Eu gostaria de saber porque está dando erro de private access mesmo eu colocando o método "getsalario". Desde já agradeço.

class Funcionario {

    public String nome;
    private double salario;
    public String cpf;
    public String rg;
    public String departamento;
    Data dataEntrada;
    int qualidade;

    public double getsalario() {
    return this.salario;
            }

    void recebeAumento(double aumento) {
        if (qualidade>1) {
            this.salario=this.salario+aumento;
        }else{
            this.salario=this.salario;
        }
    }

    double calculoGanhoAnual() {
    return(this.salario*12);
    }    


    void mostra() {
    System.out.println("Nome: "+ this.nome);
    //System.out.println("salario: "+this.salario);
    System.out.println("cpf: "+ this.cpf);
    System.out.println("rg: "+ this.departamento);
    System.out.println("rg: "+ this.rg);
    System.out.println("entrada: "+ this.dataEntrada.dataFormatada());
    System.out.println("ganho anual: "+ this.calculoGanhoAnual());
    }
}
class Data {

    int dia;
    int mes;
    int ano;

    void dataDeEntrada(int dia, int mes, int ano) {
    this.dia=dia;
    this.mes=mes;
    this.ano=ano;
    }

public String dataFormatada() {
    return this.dia+"/"+this.mes+"/"+this.ano;
    }
}

class testaFuncionario {
    public static void main(String[] args) {

    Funcionario matheus= new Funcionario();
    matheus.nome="matheus araujo";
    matheus.salario=10000.0;
    matheus.cpf="2345654321";
    matheus.rg="2741636876";
    matheus.departamento="engenharia";
    matheus.dataEntrada= new Data();
    matheus.qualidade=2;
    matheus.recebeAumento(3000.0);
    matheus.dataEntrada.dataDeEntrada(9,9,1989);
    System.out.println(matheus.getsalario());
    matheus.mostra();    
}
}
4 respostas

Matheus, troque o getsalario por getSalario...nos getters e setters a primeira letra do nome da variável deve ser maiúscula.

solução!

Matheus ,

seguinte o que está acontecendo que você está tentando atribuir uma valor para o salario , cujo o modificador dele é private .

matheus.salario=10000.0;

neste caso na classe Funcionario , você teria que um método setters por exemplo

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

e na classe principal , você irá fazer assim :

matheus.setSalario(10000.0);

quando temos atributo privado a unico que pode atribuir esse atributo é classe e onde temos que utilizar o setters ou o construtor da classe para atribuir um valor .

Espero ter ajudado, Bons Estudos

Pelo que parece já foi resolvido o seu problema com ajuda dos amigo acima mais só reforçando

1º Arruma seu metodo que esta escrito errado

public double getsalario() -> public double getSalario()

Obs: get (padrao) + nome do atributo com a primeira letra maiuscula ficando get + Salario = getSalario

2º Criar o setter para o salario já que é privado

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

Obs: Na classe principal deve chamar ele como

matheus.setSalario(10000.0);

Só estou reforçando =) se precisar ou tiver mais alguma dúvida estamos aqui.

Agradeço a ajuda de todos!