Я родом из C++, и на самом деле я еще не использовал наследование класса в колледже, поэтому я учусь сам. Я стану сомневаться в форме примера:Проблема видимости в Java
Предположим, у меня есть класс под названием Entity. Этот класс сущностей содержит два целых числа, представляющие некоторые координаты X и Y (это не имеет значения, это может быть любое другое поле). Затем у меня есть мой класс Player, расширяющий Entity. Как бы это ни казалось обычным, я хочу, чтобы Player также использовал поля x и y, а некоторый код в классе Entity также относится к этим полям.
Теперь я сомневаюсь. Являются ли x и y общедоступными, частными или защищенными? Я чувствую, что они должны быть защищены, поскольку публика не является вариантом (другие классы не должны обращаться к ней), а private не позволяет мне использовать поля x и y из расширенного (Player) класса. Но я читал в других местах, что поля классов никогда не должны быть защищены, а только методы.
Другие решения для этого, кроме установки переменной в защищенную, которая приходит в голову, будут использовать геттеры и сеттеры из суперкласса (что, на мой взгляд, является не только плохой практикой, но и полностью избыточным и ненужным) объявляя эти атрибуты в новом классе, что позволяет мне думать, получаю ли я вознаграждение от наследования, если мне придется вводить все объявления полей дважды. Я даже не знаю, может ли эта последняя работа работать, поскольку я не знаю Java, чтобы хорошо знать, как она справляется с этими проблемами видимости.
Любая помощь по этой теме будет высоко оценена.
спасибо.
http://stackoverflow.com/questions/1568091/why-use-getters-and-setters – Ted