logo

Java público versus privado

Em Java, público e privado são palavras-chave que são conhecidos como modificador de acesso ou especificador . Restringe o escopo ou acessibilidade de uma classe, construtor , variáveis , método se membros de dados. Depende de qual é aplicado. Java fornece quatro tipos de modificadores de acesso: público, privado, protegido , e padrão . Mas nesta seção discutiremos apenas dois públicos e privados, e também discutiremos os diferença entre especificador de acesso público e privado com exemplo.

Os modificadores de acesso controlam se outras classes podem usar um campo específico ou invocar um método específico. Java fornece dois níveis de controle de acesso:

    Nível superior:Neste nível, podemos usar apenas um público Nível de membro:Neste nível, podemos usar público, privado, protegido e pacote-privado (se não usarmos nenhum modificador explícito é conhecido como package-private).

A tabela a seguir mostra o nível de acesso aos membros permitido pelos modificadores público e privado.

processamento paralelo
Java público versus privado

Ainda não está claro as diferenças entre os dois? Deixe-me mostrar uma figura que demonstra como os níveis de acesso afetam a visibilidade. A figura a seguir mostra os dois pacotes p1 e p2 . Cada pacote contém duas classes Demonstração1 e Demonstração2 (no pacote p1), e Demonstração3 e Demo4 (no pacote p2).

Java público versus privado

A tabela a seguir descreve a visibilidade das classes se tornarmos as classes públicas e privadas uma por uma. Na figura acima, Demo1 é a única classe visível para cada modificador de acesso.

Java público versus privado

Vamos discutir isso em detalhes.

Modificador de acesso público

Pode ser especificado usando o público palavra-chave. Seu escopo ou acessibilidade é o mais amplo entre outros especificadores de acesso. As variáveis, classes e métodos declarados como públicos podem ser acessados ​​de qualquer lugar do programa. Não impõe restrições ao escopo dos dados públicos membros. Se declararmos métodos e classes como públicos, eles também violarão o princípio da encapsulamento . Também podemos usá-lo com as classes de nível superior.

Vamos usar o especificador de acesso privado em um Programa Java para melhor compreensão.

Demo1.java

c booleano
 package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } } 

Demo2.java

 package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } } 

Saída

 Javatpoint 

Modificador de acesso privado

É o oposto do modificador público. Pode ser especificado usando o privado palavra-chave seguida pelo nome da classe (aplicada apenas em classes aninhadas) ou nome do método ou membro de dados. Não podemos usar o especificador de acesso privado com as classes de nível superior ou interfaces . As variáveis, métodos e classes declaradas como privadas podem ser acessadas somente na classe em que foram declaradas ou herdando as classes pai. É o especificador de acesso mais restrito em Java. É a forma de encapsulamento em altura.

que meses são o primeiro trimestre
  • Nós não podemos sobrepor os métodos que são declarados como privados.
  • Se usarmos o modificador private com o construtor, evitamos que ele seja subclassificado.
  • Oculta as classes das outras classes dentro do mesmo pacote .

Vamos usar o especificador de acesso privado em um programa Java para melhor compreensão.

No exemplo a seguir, declaramos duas classes: Demo1 e Demo2. Na classe Demo1, definimos um método mostrar() como privado. A classe Demo2 contém o método main() no qual criamos um objeto da classe Demo1. Depois disso, estamos tentando acessar o método privado da classe Demo1 a partir da classe Demo2, isso não é possível. Mesmo assim, executaremos o programa para ver qual erro ele apresenta.

 class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } } 

Quando executamos o programa acima, aparece o seguinte erro:

Java público versus privado

Diferença entre especificador de acesso público e privado em Java

A principal diferença entre modificadores públicos e privados é a sua visibilidade. Java categoriza a visibilidade para membros da classe da seguinte forma:

  • Subclasses no mesmo pacote
  • Não subclasses no mesmo pacote
  • Subclasses em pacotes diferentes
  • Classes que não estão no mesmo pacote nem subclasses
Java público versus privado

Qual devemos usar?

Devemos usar o modificador de acesso público se quisermos tornar o método ou propriedade visível de qualquer lugar, de outras classes e instâncias do objeto. Use o modificador de acesso privado se quiser tornar o método ou propriedade visível apenas em sua própria classe. Evite campos públicos, exceto constantes.