2
respostas

Dúvida no Ex. 6 da Aula 3 - Começando com Orientação a objetos

Estou com problemas para colocar a data formatada no exe 6. Segue meu codigo:

Alguém consegue me ajudar com o erro na hora de compilar aqui ??

Dados2.java:63: error: non-static variable this cannot be referenced from a static context Rodrigo.dataDeEntrada = new Data(); ^ Dados2.java:48: error: Illegal static declaration in inner class funcionario.Dados2 public static void main(String[]args){ ^ modifier 'static' is only allowed in constant variable declarations 2 errors

class funcionario {


String nome;
String departamento;
double salario1;
double salario2;
int rg;
Data dataDeEntrada;




void mostra(){

System.out.println("\n Nome:" + this.nome);
System.out.println("Departamento:" + this.departamento);
System.out.println("Salario antigo:" + this.salario1);
System.out.println("Salario Atual:" + this.salario2);
System.out.println("Data de entrada: " + this.dataDeEntrada.dia + "/" + this.dataDeEntrada.mes + "/" + this.dataDeEntrada.ano);
System.out.println("Numero RG:" + this.rg);
System.out.println("Ganho Anual:" + this.calculaGanhoAnual());

            }



void recebeAumento(double aumentoSalario){this.salario2+=aumentoSalario;
                                         }

double calculaGanhoAnual(){return this.salario2 * 12;
                          }
class Data {
    int dia;
    int mes;
    int ano;

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

           }                                      
public class Dados2{

public static void main(String[]args){

 //Date Data = new Date(); 

funcionario Rodrigo= new funcionario();

Rodrigo.nome= "Rodrigo Oliveira";
Rodrigo.departamento= "Administrativo";
Rodrigo.salario1 = 3000.00;
Rodrigo.salario2= 3000.00;
Rodrigo.rg=12345;
Rodrigo.recebeAumento(1000.00);
Rodrigo.calculaGanhoAnual();


Rodrigo.dataDeEntrada = new Data();
Rodrigo.dataDeEntrada.preencheData(10,03,16);

Rodrigo.mostra();


}

}
}
2 respostas

Boa noite João,

Tenta criar uma instância de data já ao declarar os atributos do Funcionário:

class funcionario {


String nome;
String departamento;
double salario1;
double salario2;
int rg;
Data dataDeEntrada = new Data();

Após isso desconsidere esta linha na classe de teste:

Rodrigo.dataDeEntrada = new Data();

Att, Lucian

Olá João,

esse erro de compilação está ocorrendo por conta de você ter declarado a classe Data e Dados2 dentro da classe Funcionario.

Uma das convenções do Java é que se crie uma classe por arquivo .java e que o nome do arquivo seja igual ao nome da classe. Tente criar então o arquivo Data.java e dentro dele coloca a classe Data. Da mesma forma, crie um Data2.java que terá a classe Data2. Basta salvar os arquivos .java na mesma pasta para compilar e conseguir executar o código depois.