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
protected
para 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
protected
também podem ser acessados por outras classes do mesmo pacote. - Encapsulamento: Use o site
protected
para 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.