Porque não compila?

3 respostas
K
package controle;

public class Pessoa {

	String nome;
	int idade;
	Carro carro;

}
package controle;

public class Carro {

	String nome;
	int ano;
	Pessoa dono;

	void ligar() {

		if (dono.idade >= 18) {

			System.out.println("Carro ligado");

		}
		
		else{
			System.out.println();
		}

	}

}
package controle;

public class Start {

	public static void main(String[] args) {

		Pessoa p1 = new Pessoa();
		p1.nome = "Gabriel";
		p1.idade = 18;

		Carro c = new Carro();
		c.nome = "Camaro";
		c.ano = 2010;

		p1.carro = c;
		p1.carro.ligar();
	}

}

Não consigo colocar para verificar a idade no método ligar.

3 Respostas

carlinbh

Tu não instanciou o objeto Pessoa dono dentro da classe Carro, então o método ligar que precisa do atributo idade de dono
não vai funcionar.

public class Start {  
  
    public static void main(String[] args) {  
  
        Pessoa p1 = new Pessoa();  
        p1.nome = "Gabriel";  
        p1.idade = 18;  
  
        Carro c = new Carro();  
        c.nome = "Camaro";  
        c.ano = 2010;  
        c.dono = p1;  // <-----  tentar inserir essa linha.
  
        p1.carro = c;  
        p1.carro.ligar();  
    }  
  
}
K
carlinbh:
Tu não instanciou o objeto Pessoa dono dentro da classe Carro, então o método ligar que precisa do atributo idade de dono não vai funcionar.
public class Start {  
  
    public static void main(String[] args) {  
  
        Pessoa p1 = new Pessoa();  
        p1.nome = "Gabriel";  
        p1.idade = 18;  
  
        Carro c = new Carro();  
        c.nome = "Camaro";  
        c.ano = 2010;  
        c.dono = p1;  // <-----  tentar inserir essa linha.
  
        p1.carro = c;  
        p1.carro.ligar();  
    }  
  
}

heheh vlw,
fora o erro, dessa maneira que eu fiz ficou certo?

carlinbh

Ficou sim, só é recomendável você encapsular as classes, deixar todos atributos privados e criar get e set para cada um.
Mas isso é só uma recomendação para seu código ficar mais protegido, é muito importante por exemplo quando tu for trabalhar em equipe.

Criado 13 de abril de 2013
Ultima resposta 13 de abr. de 2013
Respostas 3
Participantes 2