Boa tarde, estou criando um projeto para aplicar o que foi aprendido nas aulas até esse ponto do curso, mas ao instânciar o objeto "Cliente" e tentar usar a referência para instânciar o endereço dentro do objeto estou tendo erro de NPE. Segue abaixo os códigos: Essa é a classe "Pessoa" que fiz para utilizar herança para herdar características para outros tipos "Pessoa". Nela pode se verificar que fiz uma referência "Endereco" onde coloco os dados de endereço.
package testeAulas;
public abstract class Pessoa {
private String nome;
private String cpf;
private int idade;
private Endereco endereco;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
}
A classe Endereco deixei desta forma:
package testeAulas;
public class Endereco {
private String cidade;
private String rua;
private String cep;
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getCidade() {
return cidade;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getRua() {
return rua;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getCep() {
return cep;
}
Então criei uma classe "Cliente" onde usei como classe mãe a classe "Pessoa", criei um atributo só de "Cliente" que é o "dinheiro", ao instânciar este objeto na classe "Loja" que fiz para executar, ocorre tudo certo, consigo instânciar todos os atributos no objeto.
Na linha 12 do código deixei um exemplo de como estou tentando instânciar os atributos da classe "Endereco" dentro do objeto "Cliente", não da erro de compilação, mas na execução ocorre o NPE.
package testeAulas;
public class Loja {
public static void main(String[] args) {
Cliente diego = new Cliente();
diego.setNome("Diego Marks");
diego.setCpf("00.111.222.33");
diego.setIdade(24);
diego.setDinheiro(110000.0);
diego.getEndereco().setCidade("Capanema");
Carro carro1 = new Carro();
carro1.setMarca("Toyota");
carro1.setModelo("SW4");
carro1.setCor("Prata");
carro1.setAno(2015);
carro1.setPreco(120000.0);
Carro carro2 = new Carro();
carro2.setMarca("Ford");
carro2.setModelo("F250");
carro2.setCor("Azul escuro");
carro2.setAno(2017);
carro2.setPreco(49500.0);
if(diego.getDinheiro() >= carro1.getPreco()) {
System.out.println("O preço desse" + carro1.getMarca() + " esta bom, vou olhar melhor o carro.");
}if(diego.getDinheiro() >= carro2.getPreco()){
System.out.println("Legal, esse carro da " + carro2.getMarca() + " está com preço bom. Vou olhar o restante do veículo.");
}
else {
System.out.println("Estou com pouco dinheiro, vou em olhar outro lugar");
}
Peço desculpas pelo tamanho do tópico, mas não consigo ver o que pode estar errado, o fato é que o getEndereco() está como nulo no momento de execução, mas na minha visão estou entrando no objeto diego. e após isso "puxo" a referência "Endereco" e então estou instânciando os dados de endereço. Fico no aguardo de algum feedback, desde já sou grato.