Neste tutorial, aprenderemos sobre o modificador de acesso Java, seus tipos e como usá-los com a ajuda de exemplos.
O que são modificadores de acesso?
Em Java, modificadores de acesso são usados para definir a acessibilidade (visibilidade) de classes, interfaces, variáveis, métodos, construtores, membros de dados e métodos setter. Por exemplo,
class Animal ( public void method1() (… ) private void method2() (… ) )
No exemplo acima, declaramos 2 métodos: method1 () e method2 (). Aqui,
- method1 is
public
- Isso significa que pode ser acessado por outras classes. - method2 is
private
- Isso significa que não pode ser acessado por outras classes.
Observe a palavra public
- chave e private
. Esses são modificadores de acesso em Java. Eles também são conhecidos como modificadores de visibilidade.
Nota : Você não pode definir o modificador de acesso dos métodos getters.
Tipos de modificador de acesso
Antes de aprender sobre os tipos de modificadores de acesso, certifique-se de conhecer os Pacotes Java.
Existem quatro palavras-chave modificadores de acesso em Java e são eles:
Modificador | Descrição |
Padrão | declarações são visíveis apenas dentro do pacote (pacote privado) |
Privado | declarações são visíveis apenas dentro da classe |
Protegido | as declarações são visíveis no pacote ou em todas as subclasses |
Público | declarações são visíveis em todos os lugares |
Modificador de acesso padrão
Se não especificarmos explicitamente nenhum modificador de acesso para classes, métodos, variáveis, etc., então, por padrão, o modificador de acesso padrão é considerado. Por exemplo,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Aqui, a classe Logger possui o modificador de acesso padrão. E a classe é visível para todas as classes que pertencem ao pacote defaultPackage. No entanto, se tentarmos usar a classe Logger em outra classe fora de defaultPackage, obteremos um erro de compilação.
Modificador de acesso privado
Quando variáveis e métodos são declarados private
, eles não podem ser acessados fora da classe. Por exemplo,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
No exemplo acima, declaramos uma variável privada chamada nome e um método privado chamado display()
. Quando executarmos o programa, obteremos o seguinte erro:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
O erro é gerado porque estamos tentando acessar a variável privada e o método privado da classe Data da classe Main.
Você pode estar se perguntando e se precisarmos acessar essas variáveis privadas. Nesse caso, podemos usar os métodos getters e setters. Por exemplo,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Produto :
O nome é Programiz
No exemplo acima, temos uma variável privada chamada nome. Para acessar a variável da classe externa, usamos os métodos: getName()
e setName()
. Esses métodos são chamados de getter e setter em Java.
Aqui, usamos o método setter ( setName()
) para atribuir valor à variável e o método getter ( getName()
) para acessar a variável.
Usamos a this
palavra-chave dentro de setName () para nos referir à variável da classe. Para saber mais sobre esta palavra-chave, visite Java this Keyword.
Nota : Não podemos declarar classes e interfaces privadas em Java. No entanto, as classes aninhadas podem ser declaradas privadas. Para saber mais, visite Java Nested e Inner Class.
Modificador de acesso protegido
Quando métodos e membros de dados são declarados protected
, podemos acessá-los dentro do mesmo pacote, bem como de subclasses. Por exemplo,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Produto :
Eu sou um animal
No exemplo acima, temos um método protegido denominado display()
dentro da classe Animal. A classe Animal é herdada pela classe Dog. Para saber mais sobre herança, visite Herança Java.
Em seguida, criamos um objeto dog da classe Dog. Usando o objeto, tentamos acessar o método protegido da classe pai.
Como os métodos protegidos podem ser acessados a partir das classes filhas, podemos acessar o método da classe Animal a partir da classe Dog.
Nota : Não podemos declarar classes ou interfaces protected
em Java.
Modificador de acesso público
Quando métodos, variáveis, classes e assim por diante são declarados public
, podemos acessá-los de qualquer lugar. O modificador de acesso público não tem restrição de escopo. Por exemplo,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Produto :
Eu sou um animal Eu tenho 4 pernas.
Aqui,
- A classe pública Animal é acessada a partir da classe Principal.
- A variável pública legCount é acessada a partir da classe Principal.
- O método público
display()
é acessado a partir da classe Main.
Modificadores de acesso resumidos em uma figura

Os modificadores de acesso são usados principalmente para encapsulamento. Posso nos ajudar a controlar que parte de um programa pode acessar os membros de uma classe. Para que o uso indevido de dados possa ser evitado. Para saber mais sobre encapsulamento, visite Encapsulamento Java.