Código: Qual o erro?

  Quao o erro desse códgo que não esta compilando?
  Veja mensagem do console?


   [code]  class Encapsulado {
// private é um modificador de acesso de restrição máxima
private int comProtecao;

void setComProtecao(int valor) {
	comProtecao = valor;
}

int getComProtecao() {
	return comProtecao;
}

}

public class TesteEncapsulado {
public static void main(String[] args) {
Encapsulado e = new Encapsulado(); // “e” é uma instância de Encapsulado

	// deve-se acessar o atributos de forma indireta, encapsulada
	e.setComProtecao(10);
	System.out.println("Valor com proteção: " + e.getComProtecao());
}

}[/code]

 Mensagem do console:

[code]Exception in thread “main” java.lang.Error: Unresolved compilation problem:

at TesteEncapsulado.main(Encapsulado.java:16)[/code]

As duas classes estão no mesmo pacote?

Encapsulado não possui modificador de acesso, então classes de outros pacotes não podem acessa-la.

O mesmo vale para os métodos.

[quote=Tiburcio_Mancha]As duas classes estão no mesmo pacote?

Encapsulado não possui modificador de acesso, então classes de outros pacotes não podem acessa-la.[/quote]

Sim. É só para aprender então salvei tudo no mesmo arquivo.

Qual a solução?

A classe Encapsulado vc colocando o modificador de acesso public, ela será visível para todas as classes em diferentes pacotes.O mesmo para os métodos.

Quando vc encapsula um atributo, vc cria os metodos get e set para acessar este atributo. Se vc usar o modificador default, so serão visiveis para classes no mesmo pacote.

Pra vc pegar as manhas, estuda os modificadores de acesso em Java, é muito importante!

Por acaso a classe está no pacote padrão?

Sempre que houver a declaração de mais de uma classe no mesmo arquivo .java só pode haver uma classe com o modificador public e o arquivo deve ter o mesmo nome dessa classe pública com a extensão .java.

Em outras palavras: no seu caso, tenha a certeza que o arquivo chama-se TesteEncapsulado.java