Código: Qual o erro?

6 respostas
V

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

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());
	}
}
Mensagem do console:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

	at TesteEncapsulado.main(Encapsulado.java:16)

6 Respostas

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.

Tiburcio_Mancha

O mesmo vale para os métodos.

V

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.

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

Qual a solução?

Tiburcio_Mancha

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!

B

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

M

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

Criado 6 de março de 2010
Ultima resposta 7 de mar. de 2010
Respostas 6
Participantes 4