Porque não compila?

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.

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();  
    }  
  
}  

[quote=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.

[code]
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();  
}  

}
[/code][/quote]

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

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.