Palabra clave protegida en Java con ejemplos

Los modificadores de acceso en Java ayudan a restringir el alcance de una clase, constructor, variable, método o miembro de datos. Hay cuatro tipos de modificadores de acceso disponibles en java. El acceso de varios modificadores se puede ver en la siguiente tabla a continuación de la siguiente manera: 

Difference Between Access Modifiers

La palabra clave protected en Java se refiere a uno de sus modificadores de acceso. Se puede acceder a los métodos o miembros de datos declarados como protegidos desde

  • Dentro de la misma clase.
  • Subclases de los mismos paquetes.
  • Diferentes clases de los mismos paquetes.
  • Subclases de diferentes paquetes.

Hay algunos puntos importantes que deben recordarse de la siguiente manera: 

  1. Si se desea acceder a un modificador protegido fuera de un paquete, es necesario aplicar la herencia .
  2. La protección de un constructor evita que los usuarios creen la instancia de la clase, fuera del paquete.
  3. Durante la anulación , cuando una variable o método está protegido, se puede anular a otra subclase utilizando solo un modificador público o protegido.
  4. La clase externa y la interfaz no se pueden proteger.

Implementación: Aquí crearemos dos paquetes p1 y p2. Se hace pública la clase A en p1, para acceder a ella en p2. El método que se muestra en la clase A está protegido y la clase B se hereda de la clase A y luego se accede a este método protegido creando un objeto de clase B.

Ejemplo 1: Paquete p1 

Java

// Java program to illustrate 
// protected modifier 
  
package p1; 
  
// Class A 
public class A { 
    protected void display() 
    { 
        System.out.println("GeeksforGeeks"); 
    } 
}

 
Paquete p2 

Java

// Java program to illustrate
// protected modifier
  
package p2;
  
// import all classes in package p1
import p1.*;
  
// Class B is a subclass of A
class B extends A {
    public static void main(String args[])
    {
        B obj = new B();
        obj.display();
    }
}

Producción: 

GeeksforGeeks

Ahora intentemos analizar diferentes condiciones de acceso: 

  1. Llamar a la función protegida sin extender la clase principal
  2. Acceso a una clase protegida
  3. Acceso a la función de visualización desde el mismo paquete pero diferente 
  4. Acceso a la función de visualización desde un paquete diferente
  5. Acceder a una clase protegida reemplazando a una subclase dentro del mismo paquete

A. Llamar a la función protegida sin extender la clase principal

Aquí crearemos dos paquetes p1 y p2. Se hace pública la clase A en p1, para acceder a ella en p2. El método que se muestra en la clase A está protegido. Pero el código no podrá acceder a la función «mostrar» ya que la clase secundaria no ha heredado su valor de la clase principal y generará una excepción como se muestra. 

Ejemplo 1-A: Paquete p1 

Java

// Java program to illustrate Protected Modifier
  
package p1;
  
// Class A
public class A {
  
    // Method
    protected void display()
    {
        // Print statement
        System.out.println("GeeksforGeeks");
    }
}

Ejemplo 1-B: Paquete p2 

Java

// Java program to illustrate
// protected modifier
  
package p2;
  
// import all classes in package p1
import p1.*;
  
// Class B is a subclass of A
class B {
    public static void main(String args[])
    {
        B obj = new B();
        obj.display();
    }
}

Producción: 

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main(B.java:16)

B: Acceso a una Clase Protegida

Aquí estamos tratando de acceder a una clase A protegida que resulta en un error. 

Ejemplo A:

Java

// Java program to illustrate
// protected modifier
  
package p1;
  
// Class A
protected class A {
    void display()
    {
        System.out.println("GeeksforGeeks");
    }
}

Ejemplo B: Paquete p2 

Java

// Java program to illustrate
// protected modifier
  
package p2;
  
// import all classes in package p1
import p1.*;
  
// Class B is a subclass of A
class B extends A {
    public static void main(String args[])
    {
        B obj = new B();
        obj.display();
    }
}

Salida: Esto arrojará un error.

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main(B.java:16)

C: Acceso a la función de visualización desde el mismo paquete pero de diferente clase

Implementación: en este ejemplo, tenemos acceso para acceder a una función protegida «mostrar» del mismo paquete pero de una clase diferente 

Ejemplo A: Paquete p1 

Java

// Java program to illustrate
// protected modifier
  
package p1;
  
// Class A
public class A {
    protected void display()
    {
        System.out.println("GeeksforGeeks");
    }
}

Ejemplo B: clase C 

Java

// Java program to illustrate
// protected modifier
  
// Class C is a subclass of A
public class C {
    public static void main(String args[])
    {
        A obj = new A();
        obj.display();
    }
}

Producción: 

GeeksforGeeks

D: Acceso a la función de visualización desde un paquete diferente

Aquí hemos intentado acceder a la pantalla de función protegida desde un paquete diferente por herencia y extendiendo la clase. 

Ejemplo A: Paquete p1 

Java

// Java program to illustrate
// protected modifier
  
package p1;
  
// Class A
public class A {
    protected void display()
    {
        System.out.println("GeeksforGeeks");
    }
}

Ejemplo B: Paquete p2 

Java

// Java program to illustrate
// protected modifier
  
package p2;
  
// import all classes in package p1
import p1.*;
  
// Class B is a subclass of A
class B extends A {
    public static void main(String args[])
    {
        B obj = new B();
        obj.display();
    }
}

Producción: 

GeeksforGeeks

E: Acceder a una clase protegida anulando una subclase dentro del mismo paquete

Aquí hemos diseñado dos clases A y C, donde la clase C es la anulada. 

Ejemplo A: clase A 

Java

// Java program to illustrate
// protected modifier
package p1;
  
// Class A
public class A {
    protected void display()
    {
        System.out.println("Class A");
    }
}

Ejemplo B: clase C 

Java

// Java program to illustrate
// protected modifier
  
public class C extends A {
  
    // overridden function
    protected void display()
    {
        System.out.println("Class C");
    }
    public static void main(String args[])
    {
        C obj1 = new C();
        obj1.display();
    }
}

Producción: 

Class C

Publicación traducida automáticamente

Artículo escrito por Chinmoy Lenka y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *