logo

Modificadores de acesso em Java

  1. Modificador de acesso privado
  2. Papel do construtor privado
  3. Modificador de acesso padrão
  4. Modificador de acesso protegido
  5. Modificador de acesso público
  6. Modificador de acesso com substituição de método

Existem dois tipos de modificadores em Java: modificadores de acesso e modificadores sem acesso .

Os modificadores de acesso em Java especificam a acessibilidade ou escopo de um campo, método, construtor ou classe. Podemos alterar o nível de acesso de campos, construtores, métodos e classes aplicando o modificador de acesso a eles.

Existem quatro tipos de modificadores de acesso Java:

    Privado: O nível de acesso de um modificador privado está apenas dentro da classe. Não pode ser acessado de fora da classe.Padrão: o nível de acesso de um modificador padrão está apenas dentro do pacote. Ele não pode ser acessado de fora do pacote. Se você não especificar nenhum nível de acesso, esse será o padrão.Protegido: O nível de acesso de um modificador protegido está dentro do pacote e fora do pacote por meio da classe filha. Se você não criar a classe filha, ela não poderá ser acessada de fora do pacote.Público: O nível de acesso de um modificador público está em toda parte. Ele pode ser acessado de dentro da classe, fora da classe, dentro do pacote e fora do pacote.

Existem muitos modificadores que não são de acesso, como estático, abstrato, sincronizado, nativo, volátil, transiente, etc. Aqui, aprenderemos apenas os modificadores de acesso.


Compreendendo os modificadores de acesso Java

Vamos entender os modificadores de acesso em Java por meio de uma tabela simples.

Modificador de acessodentro da auladentro do pacotepacote externo apenas por subclassepacote externo
Privado ENNN
Padrão EENN
Protegido EEEN
Público EEEE

1) Privado

O modificador de acesso privado só pode ser acessado dentro da classe.

java mvc

Exemplo simples de modificador de acesso privado

Neste exemplo, criamos duas classes A e Simple. Uma classe contém um membro de dados privados e um método privado. Estamos acessando esses membros privados de fora da classe, portanto há um erro em tempo de compilação.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Papel do Construtor Privado

Se você tornar privado qualquer construtor de classe, não poderá criar a instância dessa classe fora da classe. Por exemplo:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Nota: Uma classe não pode ser privada ou protegida, exceto uma classe aninhada.


2) Padrão

Se você não usar nenhum modificador, ele será tratado como padrão por padrão. O modificador padrão só pode ser acessado dentro do pacote. Ele não pode ser acessado de fora do pacote. Ele fornece mais acessibilidade do que privado. Mas é mais restritivo do que protegido e público.

por que interface de marcador em java

Exemplo de modificador de acesso padrão

Neste exemplo, criamos dois pacotes pack e mypack. Estamos acessando a classe A de fora do pacote, pois a classe A não é pública, portanto não pode ser acessada de fora do pacote.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

No exemplo acima, o escopo da classe A e seu método msg() é padrão, portanto não pode ser acessado de fora do pacote.


3) Protegido

O modificador de acesso protegido é acessível dentro e fora do pacote, mas apenas por herança.

O modificador de acesso protegido pode ser aplicado ao membro de dados, método e construtor. Não pode ser aplicado na classe.

tipos de junções em rdbms

Ele fornece mais acessibilidade do que o modificador padrão.

Exemplo de modificador de acesso protegido

Neste exemplo, criamos os dois pacotes pack e mypack. A classe A do pacote pack é pública, portanto pode ser acessada de fora do pacote. Mas o método msg deste pacote é declarado como protegido, portanto pode ser acessado de fora da classe apenas por meio de herança.

 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Público

O modificador de acesso público está acessível em qualquer lugar. Tem o escopo mais amplo entre todos os outros modificadores.

Exemplo de modificador de acesso público

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Modificadores de acesso Java com substituição de método

Se você estiver substituindo qualquer método, o método substituído (ou seja, declarado na subclasse) não deve ser mais restritivo.

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

O modificador padrão é mais restritivo do que protegido. É por isso que há um erro em tempo de compilação.