Por que minha subclasse não pode acessar uma variável protegida de sua superclasse, quando está em um pacote diferente?

Eu tenho uma aula abstratarelation no pacotedatabase.relation e uma subclasse dele,Joinna embalagemdatabase.operations. relation tem um membro protegido chamadomStructure.

NoJoin:

public Join(final Relation relLeft, final Relation relRight) {
        super();
        mRelLeft = relLeft;
        mRelRight = relRight;
        mStructure = new LinkedList<Header>();
        this.copyStructure(mRelLeft.mStructure);

        for (final Header header :mRelRight.mStructure) {
        if (!mStructure.contains(header)) {
            mStructure.add(header);
        }
    }
}

Nas linhas

this.copyStructure(mRelLeft.mStructure);

e

for (final Header header : mRelRight.mStructure) {

Estou tendo o erro a seguir:

O campo Relation.mStructure não está visível

Se eu colocar as duas classes no mesmo pacote, isso funcionará perfeitamente. Alguém pode explicar esse problema?

questionAnswers(4)

yourAnswerToTheQuestion