Почему мой подкласс не может получить доступ к защищенной переменной своего суперкласса, когда он находится в другом пакете?

У меня есть абстрактный класс,relation в упаковкеdatabase.relation и подкласс этого,Joinв упаковкеdatabase.operations. relation имеет защищенного члена по имениmStructure.

ВJoin:

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);
        }
    }
}

На линии

this.copyStructure(mRelLeft.mStructure);

а также

for (final Header header : mRelRight.mStructure) {

Я получаю следующую ошибку:

Поле Relation.mStructure не видно

Если я положу оба класса в один пакет, это прекрасно работает. Кто-нибудь может объяснить эту проблему?

Ответы на вопрос(4)

Ваш ответ на вопрос