1
resposta

Começando com Orientação a objetos - Exercício 8 - Duvidas

class Funcionario8{
        String nome;
        String depto;
        double salario;
        Data datEntradaBanco = new Data();
        String  rg;

        void mostra() {
               System.out.println("Nome: " + this.nome);
               System.out.println("Depto: " + this.depto);
               System.out.println("Salario:" + this.salario);
               System.out.println("Dia: "  + this.datEntradaBanco.dia);
               System.out.println("Mês: " + this.datEntradaBanco.mes);
               System.out.println("Ano: " + this.datEntradaBanco.ano);
               System.out.println("RG: " + this.rg);
               System.out.println("Ganho Anual: " +  this.calculaGanhoAnual());
        }

       public double calculaGanhoAnual () {
             double ganhoAnual = 0;
             return ganhoAnual = this.salario * 12;
        }
}

class Data {
      int dia;
      int mes;
      int ano;
}

class TesteFuncionario8 {
    public static void main(String[] args) {
         Funcionario8.salario = 100000;
         Funcionario8.calculaGanhoAnual();
    }
}

Ocorre erro de compilação.

C:\CURSOS\ALURA\Java I Primeiros passos>javac Funcionario8.java
Funcionario8.java:33: error: non-static variable salario cannot be referenced from a static context
         Funcionario8.salario = 100000;
                     ^
Funcionario8.java:34: error: non-static method calculaGanhoAnual() cannot be referenced from a static context
         Funcionario8.calculaGanhoAnual();
                     ^
2 errors

C:\CURSOS\ALURA\Java I Primeiros passos>

No meu ponto de vista o erro ocorre porque estamos movendo as informações para uma classe e não para um objeto. A classe é uma coisa abstrata que da forma ao objeto. Esta correto essa resposta ?

1 resposta

Oi Ricardo,

o que acontece é que quando criamos nossos atributos eles são atributos de um objeto/instância e aí para acessá-los teríamos que ter um objeto.

Funcionario f = new Funcionario();
f.nome = "Ricardo";

No código do exercício tenta-se acessar esses atributos pela classe diretamente.

No capítulo 7 desse curso você verá que é possível criar atributos de classe, mas hoje tudo que declaramos faz parte e só pode ser usado por um objeto.

Uma dica... use a formatação de código aqui no fórum. Basta colocar seu código entre: ```

Eu fiz isso pra você :)

abraços