Почему унаследованные свойства не доступны в подклассах - PullRequest
1 голос
/ 18 июня 2011

Я пытаюсь использовать переменную-член с именем value в подклассе.

Мой суперкласс называется SType, а мой подкласс называется SResource.

У меня есть переменная в суперклассе SType с именем value

Я хочу, чтобы это наследовало подкласс, как мне это сделать. Класс выглядит так

public class SType {

    private String value;

    public String getValue(){
        return this.value;
    }
    public void setValue(String value){
        this.value = value;
    }
}

ПРИМЕЧАНИЕ: я отредактировал вопрос, чтобы сделать его более понятным (с учетом комментария ниже). Спасибо, это было простое решение, просто нужно было сделать переменную protected вместо `private

Ответы [ 3 ]

4 голосов
/ 18 июня 2011

Чтобы получить доступ к переменной суперкласса в подклассе, она должна быть объявлена ​​общедоступной или защищенной в суперклассе.Может быть, ваша личная?

Когда у вас было private String value в дочернем классе - это совершенно новая переменная - это не переменная из родительского класса, т.е. у вас есть две отдельные частные переменные (я предполагаю, что суперклассодин частный).

2 голосов
/ 18 июня 2011

Вы можете - сделать его защищенным, а не личным.

1 голос
/ 18 июня 2011

вместо приватной попытки:

protected String value;

b.cos private может получить доступ только к текущему классу.в то время как прогнозируемый может получить доступ к подклассу

, ваш вопрос уместен, но значение private в java означает защиту текущей переменной или метода извне класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...