Bom dia moçada!
É o seguinte queria ver se alguém me ajuda a achar o motivo do erro como é um pouco complexo eu vou mostrar partes do código (deixei só o necessário para não ficar com código grande) seguidos de explicação.
Tenho as seguintes classes:
Funcionário (classe abstrata)
[code]
package br.com.minhaEmpresa.empresa.abstrato;
import br.com.minhaEmpresa.empresa.data.Data;
public abstract class Funcionario {
// atributo estático
private static int identificador;
// atributo de ligação com outra classe
protected Data dataEntrada;
// construtor sem argumentos
public Funcionario(){
Funcionario.identificador = Funcionario.identificador + 1; // adiciona um valor a cada novo funcionario criado
}
// Metódo estático
public static int getIdentificador() {
return Funcionario.identificador;
}
// Get and Set para chamar Get and Set da classe Data
public Data getDataEntrada(){
return this.dataEntrada;
}
public void setDataEntrada(Data data){
this.dataEntrada = data;
}[/code]Gerente (extendendo Funcionario)
[code]package br.com.minhaEmpresa.empresa.empregados;
import br.com.minhaEmpresa.empresa.abstrato.Funcionario;
public class Gerente extends Funcionario {
// Os atributos e metódos dessa classe não eram relevantes para explicação
}[/code]Data[code]
package br.com.minhaEmpresa.empresa.data;
public class Data {
private int dia;
private int mes;
private int ano;
public void incluiData(Data referencia, int dia, int mes, int ano) {
// Cria varíavel guardaData e atribui a referencia
Data guardaData = new Data();
guardaData = referencia;
// Atribui os valores a variável auxiliar guardaData diretamente aos atributos
guardaData.dia = dia;
guardaData.mes = mes;
guardaData.ano = ano;
}
public void mostraData() {
System.out.println(this.dia + "," + this.mes + "," + this.ano);
}
}[/code]Testa Data [code]package br.com.minhaEmpresa.empresa.teste;
import br.com.minhaEmpresa.empresa.abstrato.Funcionario;
import br.com.minhaEmpresa.empresa.data.Data;
import br.com.minhaEmpresa.empresa.empregados.Gerente;
public class TestaData {
public static void main(String[] args) {
Funcionario novoEmpregado = new Gerente();
Data novaDataA = new Data();
novoEmpregado.getDataEntrada().incluiData(novaDataA, 20, 12, 2222);
novoEmpregado.getDataEntrada().mostraData();
}
}[/code] E aqui acontece um problema o programa não acusa erro mais usando o debug em cima do código: novoEmpregado.getDataEntrada().incluiData(novaDataA, 20, 12, 2222);
Aparece o erro:
Exception in thread “main” java.lang.NullPointerException
at br.com.minhaEmpresa.empresa.teste.TestaData.main(TestaData.java:13)
A dúvida seria: Se novoEmpregado faz referência ao objeto Gerente do tipo Funcionario não consegue acessar através da classe Gerente que extende Funcionario o atributo dataEntrada do tipo Data que está como protected através do metódo get e set da classe Funcionario para acessar os metódos da classe Data que é o mostraData. Porque não consigo fazer a inclusão da data?