:metralha: :pum2:
E aí galera, será que alguem pode me ajudar ou indicar um link que explique a diferença do private e protected, pq ate agora eu nao vi nenhuma. Se possivel mandar exemplos.
Valeu
:metralha: :pum2:
E aí galera, será que alguem pode me ajudar ou indicar um link que explique a diferença do private e protected, pq ate agora eu nao vi nenhuma. Se possivel mandar exemplos.
Valeu
glmlima
private - Define que um método ou variável seja acessada somente pela própria classe (encapsulamento)
protected - Permite que um método de uma classe X definida em um pacote PX possa ser acessado por uma classe Y de um pacote PY desde que a classe Y estenda da classe X
public class Um
{
private int um;
public Um()
{
setUm(0);
}
public Um(int um)
{
setUm(um);
}
private int getUm()
{
return um;
}
private void setUm(int um)
{
this.um = um;
}
}
public class Dois
{
private int dois;
public Dois()
{
setDois(0);
}
public Dois(int dois)
{
setDois(dois);
}
protected void setDois(int dois)
{
this.dois = dois;
}
protected int getDois()
{
return dois;
}
}
public class TesteClasses
{
public static void main(String[] args)
{
Dois dois = new Dois();
System.out.println(dois.getDois());
Um um = new Um();
System.out.println(um.getUm());
}
}
[b]Explicação:
Temos 3 classes: Um , Dois e TesteClasses
Para este exemplo imagine que as classes Dois e TesteClasses estejam no mesmo pacote, então a classe TesteClasses não precisa fazer import da classe Dois. Sendo assim a classe Teste classes tem acesso aos métodos da classe Dois.
Agora, mesmo que a classe Um estivesse no mesmo pacote que as classes Dois e TesteClasse, esta não conseguiria acessar nenhum dos métodos da classe Um pois eles são private.
A diferença entre private e protected então é, no caso do protected, permitir que classes que estão no mesmo pacote tenham acesso aos métodos das outras e com o private, pode estar no mesmo pacote, em pacotes diferentes que outra(s) classes não vão conseguir acessar os métodos desta.
Agora os métodos private podem ser acessados por todos os outros métodos private, protected ou public porém estando dentro da mesma classe.
Os atributos estão disponíveis através destes métodos para não implicar no encapsulamento
Entendeu ou ficou mais complicado?[/b]
Muito simples.
O private define que sua variável e/ou método só poderá ser acessado “diretamente” pela classe que o criou, ou então, “indiretamente”, instanciando a classe.
Já o protected é menos restritivo, sua varável e/ou método poderão ser acessados diretamente pelas classes do mesmo pacote onde se encontra a classe que os criou ou até mesmo pelas subclasse(que herdaram) desta ultima.
É muito simples. Todos os atributos e métodos private são somente utilizados pela classe que os possui não permitindo a nenhum objeto e classes filhas acessarem ou possuírem estes dados quando herdam a classe de sua mãe.
O tipo protected é parecido porque também não permite que o objeto acesse estes dados, entretanto, todas as classes filhas que herdarem-se desta classe mãe possuirão os mesmos dados protected, mas com visibilidade private.
Fique com Deus.
JMan