Об этом есть две школы мысли:
Никогда не вызывать переопределенные методы из конструктора, кроме сеттеров; если у вас есть сеттер, всегда используйте его, поэтому назначение члену происходит только в одном центральном месте.
Никогда не вызывайте переопределенные методы из конструктора, даже из сеттеров; просто назначьте напрямую, например, this.make = make;
.
Я считаю, что # 2 - более приемлемая школа мысли. Проблема с # 1 состоит в том, что если подкласс переопределяет установщик, вы можете получить трудные для понимания перекрестные помехи между классами во время построения.
Примечание: у Java хорошо соблюдаются соглашения об именах. Имена классов должны начинаться с заглавной буквы; имена переменных, параметров и методов не должны. То есть Cars
, а не cars
и paramModel
, а не ParamModel
.
¹ «переопределяемый» - например, не private
, не final
методы.