Protégé constructeur et de l'accessibilité

Pourquoi ne pouvons-nous pas instancier une classe protégée constructeur si son enfant est dans un package différent? Si les variables et les méthodes peuvent être consultés, pourquoi n'a pas la même règle s'applique également pour un protégé constructeur?

pack1:

package pack1;

public class A {
    private int a;
    protected int b;
    public int c;

    protected A() {    
        a = 10;
        b = 20;
        c = 30;
    }
}

pack2:

package pack2;

import pack1.A;

class B extends A {
    public void test() {
        A obj = new A(); //gives compilation error; why?
        //System.out.println("print private not possible :" + a);
        System.out.println("print protected possible :" + b);
        System.out.println("print public possible :" + c);
    }
}

class C {
    public static void main(String args[]) {
        A a = new A(); //gives compilation error; why?
        B b = new B();
        b.test();
    }
}
  • Merci de faire un effort pour construire votre question clairement, la mettre en forme correctement, et la balise de manière appropriée. Vous n'avez pas fait un de ces.
  • son clair.. parent d'Un enfant et B sont deux paquets différents(pack 1 et pack 2 respectivement).. pourquoi erreurs du compilateur lors de la création d'un objet d'une classe(maison mère) dont le constructeur est-il protégé ?
  • Je crois qu'au lieu d'accéder b de l'instance elle-même, si cela avait obj.b (en supposant obj a été créé ou transmis avec succès), il serait également donner une erreur de compilation