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:
A tabela a seguir mostra o nível de acesso aos membros permitido pelos modificadores público e privado.
processamento paralelo
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).
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.
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:
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
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.