protected
идеально подходит для сохранения инкапсуляции, если для вашего проекта является неотъемлемой частью того, что производные классы имеют те же функции ввода-вывода, что и базовый класс.
Инкапсуляция не означает, что все должно быть private
, это означает, что все данные или член кода данного класса видны только минимальному набору пользователей класса для достижения назначенной цели класса.Другими словами, не делайте все public
только потому, что это облегчает кодирование.
Вам понадобится только геттер public
, если вы хотите показать функцию ввода-вывода базы ипроизводные классы для кодирования вне иерархии.Кстати, возврат ссылки не подразумевает никакой копии.