- Modificador de acesso privado
- Papel do construtor privado
- Modificador de acesso padrão
- Modificador de acesso protegido
- Modificador de acesso público
- 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:
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 acesso | dentro da aula | dentro do pacote | pacote externo apenas por subclasse | pacote externo |
---|---|---|---|---|
Privado | E | N | N | N |
Padrão | E | E | N | N |
Protegido | E | E | E | N |
Público | E | E | E | E |
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.