подклассу нужен доступ к закрытому атрибуту абстрактного суперкласса - PullRequest
2 голосов
/ 21 декабря 2010

У меня есть абстрактный класс Java, который реализует несколько его методов, но не другие.В методах, которые он реализует, он использует переменную закрытого атрибута.Используемую переменную также необходимо использовать в подклассе.

Как я вижу, у меня есть следующие варианты:

  • Объявление закрытой переменной в подклассе и суперклассе
  • отложить реализацию методов, реализованных в настоящее время в абстрактном классе, до подклассов

Есть ли другие варианты?Что из этого имеет больше смысла и почему?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

Вопрос в том, как вы хотите сохранить свое состояние: если не имеет значения, где хранится значение, вы можете просто добавить элемент private "поверх" другого и использовать его вместо одного. в суперклассе. Если вы хотите иметь несколько методов из вашего суперкласса и несколько методов из вашего подкласса для доступа к одному и тому же состоянию, вам нужно изменить видимость:

Вы можете объявить переменную как protected, сделав ее доступной в подклассе, или реализовать методы доступа, или даже сделать ее public.

1 голос
/ 21 декабря 2010

Надеюсь, абстрактный класс был разработан таким образом, что вам не нужен доступ к закрытым полям. От того, какой из двух ваших методов использовать, зависит полностью от того, что представляет собой абстрактный класс и ваш подкласс, и что они должны делать.

Если вам нужен только доступ для чтения к этой переменной, а методы суперкласса не изменяют ее, вы можете просто добавить другое (полностью отдельное) приватное поле с тем же именем / типом в ваш подкласс. Если вы пытаетесь изменить поведение методов суперкласса путем изменения поля, вам придется вместо этого переопределить методы.

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