1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema com atributos não instanciados

Olá, tenho uma classe chamada Funcionario que contém um método mostrar() responsável por imprimir seus atributos. Gostaria de saber como usar esse método sem ter que antes especificar cada atributo de um objeto desta classe.

O código a seguir retorna o erro

Exception in thread "main" java.lang.NullPointerException
    at Funcionario.mostrar(testaEmpresa2.java:19)
    at testaEmpresa2.main(testaEmpresa2.java:5)

quando crio uma instância da classe Funcionario "preenchendo" apenas os atributos nome e salario.

//Classe que contém o método principal
class testaEmpresa {
    public static void main(String args[]) {
        Funcionario Jair = new Funcionario("JAIR", 1500);
        Jair.mostrar();
    }
}

//Classes gerais
class Funcionario {
    String nome, CPF;
    double salario;
    Data dataDeEntrada;
    void mostrar() {
        System.out.println(
        "Nome: " + this.nome
        + "\nCPF: " + this.CPF
        + "\nSalário: R$ " + this.salario
        + "\nData de entrada: " + this.dataDeEntrada.retornar());
    }

    //CONSTRUTORES
    public Funcionario(String umNome, double umSalario) {
        this.nome = umNome;
        this.salario = umSalario;
    }
    public Funcionario(String umNome, String umCPF, double umSalario, Data umaData) {
        this.nome = umNome;
        this.CPF = umCPF;
        this.salario = umSalario;
        this.dataDeEntrada = umaData;
    }
}

class Data {
    int dia, mes, ano;
    String retornar() {
        return dia + "/" + mes + "/" + ano;
    }

    //CONSTRUTOR
    public Data(int umDia, int umMes, int umAno) {
        this.dia = umDia;
        this.mes = umMes;
        this.ano = umAno;
    }
}

Desconfio que o problema esteja em chamar o método retornar() da classe Data sem ter instanciado um objeto, mas o esperado nesse caso seria a String "0/0/0". Alguém tem alguma ideia? Agradeço de antemão.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags classe-abstrata ou faça a sua própria pergunta.