Palabra clave protegida en Java
La palabra clave protected en Java es un modificador de acceso que se utiliza para las variables miembro y los métodos. Proporciona un nivel de control de acceso que permite el acceso dentro del mismo paquete y por parte de subclases, aunque estén en paquetes diferentes.
Utilización
El modificador de acceso protected se utiliza para restringir el acceso a los miembros de una clase de forma que sean accesibles dentro de su propio paquete y por las subclases. Esto es especialmente útil para crear una estructura de herencia controlada.
Syntax
protected dataType variableName;
protected returnType methodName() {
// method body
}
dataType: El tipo de la variable.variableName: El nombre de la variable.returnType: El tipo de retorno del método.methodName: El nombre del método.
Ejemplos
Ejemplo 1: Variable 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);
}
}
En este ejemplo, protectedVariable se declara con la palabra clave protected en la clase Parent. La clase Child, que es una subclase de Parent, puede acceder a protectedVariable e imprimir su valor.
Ejemplo 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();
}
}
Aquí, protectedMethod es un método protegido de la clase Parent. La clase Child puede llamar a este método porque es una subclase de Parent.
Ejemplo 3: Acceso en paquete 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();
}
}
En este ejemplo, la clase Parent está en el paquete com.example.parent, y la clase Child está en el paquete com.example.child. La clase Child puede seguir accediendo a la protectedMethod de la clase Parent porque es una subclase.
Consejos y buenas prácticas
- Herencia controlada: Utiliza
protectedpara permitir que las subclases accedan a los miembros manteniéndolos ocultos a otras clases de paquetes diferentes. - Acceso al paquete: Recuerda que los miembros de
protectedtambién son accesibles para otras clases del mismo paquete. - Encapsulación: Utiliza
protectedpara equilibrar encapsulación y herencia, exponiendo sólo los miembros necesarios a las subclases. - Evita la sobreexposición: Ten cuidado de no abusar de
protected, ya que podría exponer demasiado el funcionamiento interno de la clase a las subclases y a otras clases del mismo paquete. - Documentación: Documenta claramente el uso previsto de los miembros protegidos para evitar usos indebidos o accesos no intencionados.
- Acceso a través de instancias de subclases: Comprende que se puede acceder a los miembros protegidos a través de instancias de subclases, aunque la instancia esté declarada en un paquete diferente.