Descripción general de la palabra clave protegida en Java

Las palabras clave protegidas son palabras clave que se utilizan para restringir el alcance dentro del cual se puede acceder a la variable, el método y los constructores. Es uno de los tipos de modificadores de acceso en Java. Se utilizan para diferenciar entre el alcance de métodos, variables, constructores y clases. Hay 4 tipos de modificadores de acceso en Java y son:

  1. Palabra clave predeterminada: se puede acceder solo dentro del paquete y no se puede llamar fuera de él. Como su nombre indica, cuando no se menciona ningún especificador de acceso, se asigna automáticamente como predeterminado.
  2. Palabra clave pública: se puede acceder desde cualquier parte del programa. Esto significa que se puede usar desde la misma clase o una clase diferente y el mismo paquete o un paquete diferente.
  3. Palabra clave privada: restringen las palabras clave a un nivel superior al no permitir que se acceda a ellas desde cualquier lugar fuera de la clase.
  4. Palabra clave protegida: en este artículo, conoceremos más sobre las palabras clave protegidas.

Una vez que una variable o un método se marca como protegido, solo se puede acceder mediante los siguientes métodos:

  • Dentro de la misma clase en la que se declara.
  • De otras clases que también están en el mismo paquete que la clase declarada.
  • Clases heredadas de la declarada, independientemente de su paquete.

Las palabras clave protegidas son como una combinación de palabras clave públicas y privadas, ya que se introdujeron para poder acceder a las variables fuera de la clase (que no es posible en el caso de las palabras clave privadas), pero también mantienen que solo ciertos métodos pueden heredar las mismas.

Sintaxis

Las palabras clave protegidas se declaran con la palabra clave prefijada como "protegida". Primero declaramos la palabra clave protegida en una de la clase llamada "MyClass" como se muestra a continuación:

class MyClass (
protected String name = "Katy";
protected int token= 55;
)
public class SubClass extends MyClass (
public static void main(String() args) (
SubClass obj = new SubClass();
System.out.println(obj.name + "'s token number is: " + obj.token);
)
)

Aquí la clase "Subclase" amplía "MyClass" y, por lo tanto, la palabra clave protegida se puede usar aquí creando un objeto de Subclase y llamando a las variables.

Salida:

Las palabras clave protegidas solo se pueden usar a nivel de miembro, es decir, clases internas que se declaran fuera de una función y que no son estáticas. La palabra clave protegida es diferente de la privada, ya que se puede acceder fuera de una clase y en la subclase de otro paquete.

Algunas de las restricciones sobre el uso de palabras clave protegidas son:

  • No se pueden usar para declarar clases como protegidas.
  • Las interfaces no pueden declararse como protegidas.
  • La accesibilidad fuera del paquete es solo a través de la herencia.
  • No se puede acceder a un constructor que esté protegido fuera del paquete creando su instancia.

Ejemplos

Veamos algunos ejemplos donde podemos entender mejor el concepto de palabras clave protegidas.

1. Llamar a la palabra clave protegida sin extender la clase padre

Aquí intentamos llamar a la palabra clave de la clase padre de "paquete1". "ProtectedExample2" se crea en "package2" y la palabra clave "disp" se llama aquí. Pero el código no podrá acceder a la palabra clave ya que la clase secundaria no ha heredado su valor de la clase principal y generará una excepción como se muestra.

Código:

package com.package1;
public class Example (
protected String disp="Printing message from protected variable from package1";
)
//Create new package as com.package2
//Create new class as ProtectedExample2
package com.package2;
import com.package1.Example;
public class ProtectedExample2 (
public static void main(String() args) (
ProtectedExample2 a=new ProtectedExample2();
System.out.println(a.disp);
)
)

Salida:

2. Accediendo a una clase protegida

En este ejemplo, intentamos acceder a la clase "ProtectedExample5" que está protegida. Esto provoca un error de compilación.

Código:

protected class ProtectedExample5 (
void display()
(
System.out.println("Try to access outer protected class");
)
public static void main(String() args) (
ProtectedExample5 p=new ProtectedExample5();
p.display();
)
)

Salida:

3. Mostrar la palabra clave protegida del mismo paquete pero diferente clase

En el siguiente ejemplo, primero creamos un paquete llamado "com.package1" y creamos una nueva clase con el nombre "Ejemplo". Aquí declaramos que nuestra palabra clave "disp" está protegida. Intentaremos mostrar esta palabra clave protegida utilizando la clase "Ejemplo1". Para esto, primero se debe crear un objeto de la clase principal "Ejemplo1" y luego imprimir el valor asignado a la palabra clave "disp".

Código:

package com.package1;
public class Example (
protected String disp="Printing message from protected variable from package1";
)
class Example1 (
public static void main(String() args) (
Example obj=new Example();
System.out.println(obj.disp);
)
)

Salida:

4. Mostrar palabras clave protegidas de un paquete diferente

Usando el mismo código que el anterior, veremos cómo llamar a la palabra clave protegida creando un paquete diferente "package2". Se puede acceder a una palabra clave protegida solo a través de la herencia del paquete1, por lo tanto, "ProtectedExample2" se extiende desde "Ejemplo". De manera similar al primer ejemplo, tenemos que crear un objeto de la clase "ProtectedExample2" para acceder a la palabra clave protegida desde el paquete "com.package1".

Código:

package com.package2;
import com.package1.Example;
public class ProtectedExample2 extends Example(
public static void main(String() args) (
ProtectedExample2 a=new ProtectedExample2();
System.out.println(a.disp);
)
)

Salida:

5. Acceder a una clase protegida anulando la subclase

Aquí la clase se declara protegida dentro de la clase heredada "Example5". Además, una clase protegida llamada "Ejemplo" se declara fuera de la función pero en el mismo paquete. Cuando se crea un objeto de "Ejemplo5" y se llama a la clase protegida "disp ()", podemos observar que se llama al método anulado en lugar de la clase externa. Esto se debe a que no podremos importar "com.package1" y su clase "Ejemplo" ya que no es visible y causa un error de compilación.

Código:

//Create a file by Example.java
package com.package1;
class Example
(
protected void disp()
(
System.out.println("Printing from protected class in the outside function");
)
)
//Create a class by the name Example5.java
public class Example5 extends Example (
protected void disp()
(
System.out.println("Accessing the overriden function");
)
public static void main(String() args) (
Example5 exp=new Example5();
exp.disp();
)
)

Salida:

Importancia de la palabra clave protegida

  • Estas palabras clave permiten que las clases o sus variables se hereden de su clase principal, lo que no es posible con ninguna otra palabra clave restringida, como privada.
  • La palabra clave protegida es la combinación de la ventaja de la palabra clave privada y la de una palabra clave pública. Elimina la desventaja de la palabra clave pública de que la variable o clase sea accesible desde cualquier parte del programa al restringir el alcance.

Conclusión: palabra clave protegida en Java

Como se muestra en los ejemplos anteriores, elegimos palabras clave protegidas en función del nivel de acceso que requerimos en el nivel de código. Ayudan enormemente en los casos en que se necesita acceder a la misma variable o clase desde otros métodos heredados en el programa. Siempre existe una relación padre-hijo entre la clase padre y sus subclases que usan la palabra clave protegida.

Artículos recomendados

Esta es una guía de palabras clave protegidas en Java. Aquí discutimos la descripción general, la sintaxis y los diferentes ejemplos de palabras clave protegidas en Java. También puede consultar los siguientes artículos para obtener más información:

  1. Encapsulación en Java
  2. Constructor en Java
  3. Preguntas de la entrevista de Java
  4. Anulación en POO
  5. Palabras clave de Java
  6. Herramientas de implementación de Java
  7. Modificadores de acceso en PHP
  8. Anulación en Java
  9. Encapsulación en JavaScript