Modificadores de acesso Java
Modificadores de acesso Java
Neste tutorial, aprenderemos sobre o Java Access Modifier, seus tipos e como usá-los com a ajuda de exemplos.
O que são modificadores de acesso?
Em Java, os 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,
- método1 é
public
- Isso significa que pode ser acessado por outras classes. - método2 é
private
- Isso significa que não pode ser acessado por outras classes.
Observe a palavra-chave
public
e private
. Estes são modificadores de acesso em Java. Eles também são conhecidos como modificadores de visibilidade. Observação :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 modificadoras de acesso em Java e são elas:
Modificador | Descrição |
Padrão | declarações são visíveis apenas dentro do pacote (pacote privado) |
Privado | as declarações são visíveis apenas dentro da classe |
Protegido | as declarações são visíveis dentro do pacote ou em todas as subclasses |
Público | as 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 será considerado. Por exemplo,
package defaultPackage;
class Logger {
void message(){
System.out.println("This is a message");
}
}
Aqui, o Logger classe tem o modificador de acesso padrão. E a classe é visível para todas as classes que pertencem ao defaultPackage pacote. No entanto, se tentarmos usar o Logger class em outra classe fora de defaultPackage, receberemos 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 name e um método privado chamado
display()
. Ao executar o programa, teremos 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 do Dados classe do Principal classe.
Você pode estar se perguntando e se precisarmos acessar essas variáveis privadas. Nesse caso, podemos usar o método 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());
}
}
Saída :
The name is Programiz
No exemplo acima, temos uma variável privada chamada name . Para acessar a variável da classe externa, usamos métodos:
getName()
e setName()
. Esses métodos são chamados getter e setter em Java. Aqui, usamos o método setter (
setName()
) para atribuir valor à variável e ao método getter (getName()
) para acessar a variável. Usamos
this
palavra-chave dentro do setName() para se referir à variável da classe. Para saber mais sobre essa palavra-chave, visite Java this Keyword. Observação :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 and 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();
}
}
Saída :
I am an animal
No exemplo acima, temos um método protegido chamado
display()
dentro do Animal classe. O Animal classe é herdada pelo Dog classe. Para saber mais sobre herança, visite Herança Java. Em seguida, criamos um objeto dog do Cão classe. 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 de Animal classe do Cão classe.
Observação :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
, então 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();
}
}
Saída :
I am an animal. I have 4 legs.
Aqui,
- A classe pública Animal é acessado a partir do Principal aula.
- A variável pública legCount é acessado a partir do Principal aula.
- O método público
display()
é acessado a partir do Principal aula.
Modificadores de acesso resumidos em uma figura
Modificadores de acesso são usados principalmente para encapsulamento. Posso nos ajudar a controlar qual 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 Java Encapsulation.
Java