Creé una instancia de clase base en clase derivada e intenté acceder a los miembros protegidos.miembros protegidos con Java accedidos en clase derivada utilizando la instancia de clase base
Puedo acceder directamente a miembros protegidos en una clase derivada sin instanciar la clase base.
Clase base:
package com.core;
public class MyCollection {
protected Integer intg;
}
Una clase derivada en el mismo paquete -
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}
Una clase derivada en un paquete diferente -
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
¿Cómo es posible el acceso un miembro protegido de una clase base en una clase derivada utilizando instancia de clase base cuando la clase derivada también está en s ¿Qué es un paquete pero no cuando la clase derivada está en un paquete diferente?
Si marco el miembro protegido como "estático", entonces puedo acceder al miembro protegido de la clase base usando una instancia de clase base en una clase derivada que reside en un paquete diferente.
posible duplicado de [Java Protected Access que no trabaja] (http://stackoverflow.com/questions/332920/java-protected-access-not-working) --- ¡En realidad ese es el engaño equivocado! ¡Lo siento! Sin embargo, esto definitivamente es una tontería. – polygenelubricants
no se preocupe, su IDE no hará ninguna diferencia a la pregunta, ya que se trata de la semántica del lenguaje Java en sí. –
posible duplicado de [¿por qué no puedo acceder al método protegido de Java incluso si he extendido la clase?] (Http://stackoverflow.com/questions/1622219/why-cant-i-access-protected-java-method -even-thought-ive-extended-the-class) – starblue