Protégé modificateur d'accès en Java

Je vais avoir un peu de mal à comprendre les protégés modificateur d'accès en java (ou la conception). Je pensais que cela signifiait paquet et l'accès à travers des objets qui héritent de la classe contenant un résumé membre.

J'ai écrit l'exemple de code suivant. Je vois que le commentaire sur la ligne de produit une erreur de compilation si décommentée. Pourquoi ai-je accès pro par le biais d'un Second objet dans la Seconde, mais pas par l'intermédiaire d'un Premier objet de la Deuxième?

package first;

public class First {

    protected void pro(){
        System.out.println("Can see protected method");
    }

}

package first;

public class InFirst {


    public static void main(String[] args){
        First fst = new First();
        fst.pro();
    }

}

package second;

import first.First;

public class Second extends First {

    public static void main(String[] args){

        First fst = new First();

//     fst.pro();

        Second sec = new Second();
        sec.pro();

    }
}
Vous pourriez prendre une lecture de Contrôle de l'Accès aux Membres d'une Classe pour plus de détails
Bonne observation. Normalement, c'est source de confusion pour beaucoup de développeurs. Voir le schéma ci-dessous, peut-être que c'est utile.
Merci, j'ai lu cela. Je suis fondamentalement confus par le membre de phrase "par une sous-classe de sa classe dans un autre package" qu'ils utilisent pour les protégés de modificateur. Comme indiqué ci-dessus, je peux accéder à des pro de la Seconde, mais seulement par l'intermédiaire d'un Deuxième objet de la sec et pas par l'intermédiaire d'un Premier objet de la fst.
Je pense que le détail important qui vous manque dans la sous-classe d'accès d'une classe parent membre protégé, c'est que l'accès doit se faire dans le cadre de la sous-classe "mise en œuvre" (les spécifications se réfère au corps, à la même différence). La méthode main de la classe est pas considéré comme faisant partie de sa mise en œuvre, qui est pourquoi vous obtenez une erreur.
Si j'écris le même ensemble d'états non méthode statique dans la Deuxième, j'obtiens toujours la même erreur si je décommentez la ligne de commentaire. Ce n'est donc pas la source de l'erreur.

OriginalL'auteur B M | 2013-04-11