Pourquoi la sous-classe d'un autre paquet ne peut pas accéder à une méthode protégée?

J'ai deux classes de deux forfaits différents:

package package1;

public class Class1 {
    public void tryMePublic() {
    }

    protected void tryMeProtected() {
    }
}


package package2;

import package1.Class1;

public class Class2 extends Class1 {
    doNow() {
        Class1 c = new Class1();
        c.tryMeProtected(); //ERROR: tryMeProtected() has protected access in Class1
        tryMeProtected();  //No error
    }    
}

Je peux comprendre pourquoi il n'y a pas d'erreur dans l'appel de tryMeProtected() depuis Class2 voit cette méthode car il hérite d' Class1.

Mais pourquoi n'est-il pas possible pour un objet de Class2 pour accéder à cette méthode sur un objet de Class1 à l'aide de c.tryMeProtected(); ?

source d'informationauteur user2986848