Modificadores de acesso Java (com exemplos)

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 thispalavra-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 protectedem 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

Acessibilidade de todos os modificadores de acesso em Java

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.

Artigos interessantes...