¿Por qué un constructor Java debe ser público o protegido para que una clase se extienda fuera de su paquete?
El siguiente es miProtectedConstructor.java
código fuente
package protectCon;
public class ProtectedConstructor{
public int nothing;
ProtectedConstructor(){
nothing = 0;
}
}
Y el siguiente es elUsingProtectedCon.java
fuente
package other;
import protectcon.ProtectedConstructor;
public class UsingProtectedCon extends ProtectedConstructor{ //**Line 4**
public static void main(String... a) {
}
}
Cuando compiloUsingProtectedCon.java
, Recibo un error en la línea 4 que se muestra arriba. Dice que ProtectedConstructor () no es público; así que no se puede acceder fuera del paquete.
Sin embargo, dado que mi clase es pública, ¿no debería poder extenderla fuera del paquete? De todos modos, no estoy creando ninguna instancia de ello.
Ahora, si hago el constructor deProtectedConstructor
clase comopublic
oprotected
entonces el código se compila bien sin error.
ntonces, ¿por qué es necesario incluso que el constructor seapublic
oprotected
, y no solo tiene acceso predeterminado?