[Resolvido] Dúvida em afirmação de apostila

3 respostas
M

Olá,

Eu estava lendo a apostila FJ-11 da Caelum quando me deparei com um exemplo e uma afirmação que não consegui entender.
O exemplo é mais ou menos assim :

class Cliente {
	private String nome;
	private String endereco;
	private String cpf;
	private int idade;
	public void mudaCPF(String cpf) {
		validaCPF(cpf);
		this.cpf= cpf;
		
	}
	private void validaCPF(String cpf) {
		if(cpf.length()==11) {
			System.out.println("Válido");
		}
		else {
			System.out.println("Inválido");
		}
	}
	void mudaNome(String nome) {
		this.nome= nome;
		System.out.println(nome);
	}
}

E logo abaixo vem a afirmação :
" Agora, se alguém tentar criar um CLiente e não usar o mudaCPF, vai receber um erro de compilação, já que o atributo CPF é privado "

Achei estranho, então resolvi testar e fiz o seguinte :
class Teste {
	public static void main (String[] args) {
		Cliente c1 = new Cliente();
		c1.mudaNome("mid");
		c1.mudaCPF("[telefone removido]");
		
	}
}

E compilou normalmente.
Alguém pode me dizer o que eu estou interpretando errado e que relação tem entre um atributo ser privado e a obrigatoriedade em um método ser usado ?

Desde já, muito obrigado a todos, um abraço.

3 Respostas

rafaelglauber

Oi,

Acredito que a questão é um problema de português mesmo, eles estão dizendo que se você tentar mudar o CPF através do atributo private String cpf; vai dar erro, para mudar o CPF tem que ser pelo metodo criado que é publico.

MiltonBastos

Ele quis dizer que não funciona se vc tentar alterar diretamente o valor da propriedade CPF sem usar o método,
ou seja, não funciona se vc tentar assim:

M

Nossa, realmente era isso, estava na cara, acho que é hora de descançar um pouco os olhos…
Obrigado pela ajuda e desculpa pelo post semi-inútil.
Até mais.

Criado 30 de julho de 2008
Ultima resposta 30 de jul. de 2008
Respostas 3
Participantes 3