Я видел, как пользователи SO говорили, что защищенные поля — это плохо, потому что они могут создавать проблемы по мере роста кода. Пожалуйста, обратитесь к следующему коду.
public class Car {
private String modelName;
private int yearReleased;
//getters and setters
}
Если класс Car расширяется классом ToyotaCar
public class ToyotaCar extends Car{
// Toyota specific stuff
}
Я хочу, чтобы мой объект ToyotaCar имел поля modelName
и yearReleased
. И именно поэтому я решил расшириться от Авто класса. Но частные члены не наследуются подклассом (хотя я мог получить доступ к этим полям, используя общедоступный геттер и сеттер). Теперь я запутался в том, должен ли я сделать поля в классе Car защищенными, а не частными. Но люди говорят, что это создает проблемы.
Означает ли это, что независимо от того, какой класс вы пишете, всегда делайте поля закрытыми?
Если да, то в каких случаях используется защищенное ключевое слово? это только для методов, которые мы планируем использовать в наших подклассах?
protected
доступ полностью обходит это. Эмпирическое правило заключается в том, чтобы инкапсулировать все, классы должны иметь методы, а не переменные. - person Boris the Spider   schedule 11.04.2015ToyotaCar
делают имеют поляmodelName
иyearName
, хотя к ним по-прежнему нельзя получить доступ методами внеCar
. - person user253751   schedule 11.04.2015