palavra-chave protegida em Java
A palavra-chave protected em Java é um modificador de acesso usado para variáveis e métodos de membros. Ele fornece um nível de controle de acesso que permite o acesso dentro do mesmo pacote e por subclasses, mesmo que estejam em pacotes diferentes.
Uso
O modificador de acesso protected é usado para restringir o acesso aos membros de uma classe de modo que eles sejam acessíveis em seu próprio pacote e por subclasses. Isso é particularmente útil para criar uma estrutura de herança controlada.
Sintaxe
protected dataType variableName;
protected returnType methodName() {
// method body
}
dataType: O tipo da variável.variableName: O nome da variável.returnType: O tipo de retorno do método.methodName: O nome do método.
Exemplos
Exemplo 1: Variável protegida
package com.example;
public class Parent {
protected int protectedVariable = 100;
}
package com.example;
public class Child extends Parent {
public void display() {
System.out.println("Protected Variable: " + protectedVariable);
}
}
Neste exemplo, protectedVariable é declarado com a palavra-chave protected na classe Parent. A classe Child, que é uma subclasse de Parent, pode acessar protectedVariable e imprimir seu valor.
Exemplo 2: Método protegido
package com.example;
public class Parent {
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
package com.example;
public class Child extends Parent {
public void callProtectedMethod() {
protectedMethod();
}
}
Aqui, protectedMethod é um método protegido na classe Parent. A classe Child pode chamar esse método porque é uma subclasse de Parent.
Exemplo 3: Acesso em um pacote diferente
package com.example.parent;
public class Parent {
protected void protectedMethod() {
System.out.println("Protected method in Parent class.");
}
}
package com.example.child;
import com.example.parent.Parent;
public class Child extends Parent {
public void callProtectedMethod() {
protectedMethod();
}
}
public class Test {
public static void main(String[] args) {
Child child = new Child();
child.callProtectedMethod();
}
}
Neste exemplo, a classe Parent está no pacote com.example.parent e a classe Child está no pacote com.example.child. A classe Child ainda pode acessar o protectedMethod da classe Parent porque é uma subclasse.
Dicas e práticas recomendadas
- Herança controlada: Use
protectedpara permitir que as subclasses acessem os membros e, ao mesmo tempo, mantê-los ocultos de outras classes em pacotes diferentes. - Acesso ao pacote: Lembre-se de que os membros do
protectedtambém podem ser acessados por outras classes do mesmo pacote. - Encapsulamento: Use o site
protectedpara equilibrar o encapsulamento e a herança, expondo apenas os membros necessários às subclasses. - Evite a superexposição: Tenha cuidado para não exagerar no uso do
protected, pois ele pode expor demais o funcionamento interno da classe para subclasses e outras classes do mesmo pacote. - Documentação: Documente claramente o uso pretendido dos membros protegidos para evitar o uso indevido ou o acesso não intencional.
- Acesso por meio de instâncias de subclasses: Entenda que os membros protegidos podem ser acessados por meio de instâncias de subclasses, mesmo que a instância seja declarada em um pacote diferente.