[quote=GabrielCardelli]Galera então tipw o metodo sendo private o objeto não pode instanciar seria isso[/url]?
Eu nao poderia chegar e fazer em outra classe teste
Curso c = new Curso(“Artes”);
c.nomeCurso = " AEEEEE"; (NAO PODE? pq é private é isso?)
Obrg [/quote]
Bem, isso é o fato de vc encapsular um atributo de uma determinada classe.
Pra manter a consistência dos dados, utilizamos a técnica de encapsulamento.
Imagine uma situação onde, em um sistema qualquer de banco, o processamento dos dados tenha a tarefa de fazer o cadastro dos clientes.
Cliente novoCliente = new Cliente();
novoCliente.nome = "João";
novoCliente.nome = "Paulo"; // Isso é estranho né?
No caso acima, o sistema registra no banco o cliente “João”. Em seguida, por algum mistério desvendado, o sistema atualiza o nome do “João” para “Paulo”.
Aquele objeto (cliente) no sistema não deveria se chamar João pra sempre??? Sim, deveria.
Fica estranho uma classe externa (a do processamento - main, no caso - trabalhar em cima dos atributos. A classe cliente deveria ter um MÉTODO DE ADICIONAR CLIENTES, da forma necessária. Ou seja, nesse método de adicionar, antes de cadastrar o nome do cliente, é verificado se o atributo já está preenchido com o nome:
class Cliente {
private String nomeCliente; // vamos deixar essa variável privada (SOMENTE ESTA CLASSE - CLIENTE (THIS) PODE ACESSAR ESSA VARIÁVEL E MODIFICA-LA
// Método público para configurar o nome do cliente
public void setNomeCliente (String nome) {
if (this.nomeCliente == null) this.nomeCliente = nome;
else System.out.println("Ja existe nome para este cliente"; // Aqui podemos lançar uma Exception se quisermos, mas fica a critério do negocio da empresa
}
// Método público para "pegar" o nome do Cliente
public String getNomeCliente () {
return this.nomeCliente;
}
Depois, o processamento (main) acessará da seguinte forma:
main.........
Cliente c = new Cliente();
// Isso não vai funcionar >>>>>>>>>>>>> c.nomeCliente = "João">>>>>>>> pq a variavel é PRIVATE
c.setNomeCliente("João"); // Essa classe que tem o main, neste momento está utilizando o método público fornecido pela classe Cliente.
c.setNomeCliente("Paulo"); // Isso até compila, mas não configura o nome como "Paulo" ao objeto cuja referencia é "c".
//Imprimindo o nome do cliente, utilizando o método publico que "traz" o nome do cliente cadastrado
System.out.println(c.getNomeCliente());
// No console aparecerá JOÃO. Notou a importância do encapsulamento neste caso?
Podemoss melhorar ainda, tirando o método setNomeCliente da Classe Cliente. Mas como configurar o nome???
Utilizando o construtor.
Aí já é outro assunto que foge do tema do tópico, mas não é nada avançado. Bem básico e simples. Basta dar uma boa pesquisada.
O intuito aqui só foi mostrar um pouco da importância do encapsulamento (consistência dos dados) no sistema.
Espero ter ajudado, e se errei em alguma coisa, favor corrigir.
[]´s