Public / Private

Olá, uma dúvida que tenho é quando usar public e quando usar private?

:?

no public o proprio no já diz - '“publico” - é usado quando não a necessidade de encapsulando de dados aonde as variável da classe e seus metódos pode ser acessado pelo os objetos da classe

e o private já é acontrario do public - aonde se usa o conceito de encapsulamento aonde os objetos da classe só tem acesso as variaveis através do metódos get e somente a classe tem acesso as suas variaveis privadas !

Bravox

acho que já tudo foi explicado… :smiley:

Você irá utilizar public quando desejar que aquele método ou variável seja visíviel a qualquer classe, e private quando desejar que o método ou variável seja visível somente à classe em que ela foi criada.
Exemplo:
Você pode criar uma váriavel String que irá receber um número de CPF, seria interessante que ela seje private e criará também um método public. Esse método public irá configurar a variável CPF, impedindo que algum outro método acesse a variável CPF e coloque nela um valor inválido.
Tendeu?

FLW

Tendi, vlw :slight_smile:

Cara, esse assunto é bem discutido em livros de Java, e eu acho que se a gente for te explicar aqui vai gastar um tempão, de modo que nos livros tá bem explicadinho.

Vai em qualquer biblioteca e procura aquele livro do Deitel (Java como Programar) ou então baixa uns pdfs de curso introdutório de Java(procura no Google).

Se ainda assim você não entender algum exemplo poste aí de novo.

Eu comprei esse livro, a 6ª Ed.
Más ainda ñ chegou, chega entre hoje e amanhã.

[quote=raulsouzalima]Eu comprei esse livro, a 6ª Ed.
Más ainda ñ chegou, chega entre hoje e amanhã.
[/quote]

tenha paciência…
muita paciência…
é um livro bastante…ENROLATIVO!
mas dá para aprender bastante sim!:smiley:
eu não tenho paciência…então não gostei muito do livro…ahahahah
:slight_smile:

Uma coisa q nao li aqui e me corrjam se estiver errado
uma variavel ou um metodo “public” ele eh visivel para todas as classes e subclasses. isso ja foi dito acima,
o modificador d visibilidade “private”, como ja foi dito acima soh eh acessado
atraves dos metodos da classe, as subclasses tambem nao conseguem acessalo diretamente, isso esta certo neh, se nao me engano
li alguma coisa desse tipo

espero te ajudado um pokinho mais!!!
:smiley:

Duas coisinhas:

1 - private permite que outros objetos da mesma classe acessem os membros do objeto
2 - get/set não têm nada a vercom encapsulamento

public --> vc pode usar em outra outra classe e invoca-la.
private --> pode ser apenas usado naquela classe, outras classes nao pode invocar…

private = variavel local da classe
public = variavel global

um exemplo melhor de public e private, um adm de redes tem 2 us um chama private(operador) e outro public(substituto), bom ele diz que private so pode ter acesso aos departamentos que estao na classe do setor administrativo(rh, financeiro, fiscal etc), ja o o public seu substituto pode administrar todos os setores da empresa, administrativo, deposito etc…

iai ficou ± a ideia? como funciona public e private?

public class adm // pode criar outra classe e chamar adm pq eh publica
{

 private int digito; // digito so vale apenas nessa classe
}

:stuck_out_tongue:

Obrigado a todos…
Sobre o livro, chegou ontem :smiley: , por enquanto estou achando bom…
Más voltando…
Aproveitando q o Phillip tocou no assunto, poderiam me explicar direito sobre get/set ?

E Camilo, valeu pelo exemplo… ajudou muito na compreensão !!!

[quote=raulsouzalima]Obrigado a todos…
Sobre o livro, chegou ontem :smiley: , por enquanto estou achando bom…
Más voltando…
Aproveitando q o Phillip tocou no assunto, poderiam me explicar direito sobre get/set ?[/quote]

set --> eh uma ação

ger --> armazena uma ação de um metodo

set imprimir()

System.out.print(“java”)

get String a()

return imprimir

Vlw :slight_smile:

Não é bem assim :roll:

set e get são duas convenções para prefixos de identificadores de métodos que começaram com JavaBeans e hoje se espalharam.

Imagina que você tem uma propriedade nome numa classe.

class A{
 private int idade;
}

Para definir o valor de nome você poderia ter um setNome:

class A{
 private int idade;

 public void setIdade(int novaIdade){
  this.idade=novaIidade;
 }
}

E para obtêr o nome você teria um get:

class A{
 private int idade;

 public void setIdade(int novaIdade){
  this.idade=novaIidade;
 }

 public String getIdade(){
  return idade;
 }
}

mas isso é apenas uma convenção, teoricamente você pode utilizar qualquer nome para estes método (só que é bom usar essa porque tudo em Java é assim).

O que eu falei sobre encapsulamento na verdade não está 100% certo. Você não precisa de get/set para encapsulamento e não é porque você tem get/set que tem algo encapsulado, vai depender mais do seu projeto.

Entretanto, você pode utilizar get/set para encapsular um dado ou ocultar uma informação. Encapsular significa esconder os internos de um componente e isso é mais uma decisão de design.

No exemplo acima, se quisermos mudar a implementação da classe apra ao invés de guardar a idade guardar o ano de nascimento seria simples:

class A{
 private int anoNascimento;

 private int anoAtual=2006;//imagina que isso venha dinamicamente de algum canto

 public void setIdade(int novaIdade){
  this.anoNascimento=anoAtual-novaIdade;
 }

 public String getIdade(){
  return anoAtual-anonascimento;
 }
}

Pronto, você não precisa mudar nenhuma classe que utilize get/set.

Vlw Phillip :smiley: