Even if you use getters and setters (which I personally would like - I almost always kept the fields private), this does not mean that protected becomes meaningless ... it just means that you will probably make the getters and the settings themselves protected , and not a variable.
If your question is whether protected accessibility is really useful at all, I would say that it is - it often makes sense to have a member available only for subclasses. Moreover, I sometimes use a protected abstract method to which a superclass is called, but is not available outside the hierarchy.
For example, in a template method template, you can have a public method that does some customization, invokes a protected abstract method, and then maybe also does some final work. You do not want the abstract method to be publicly available, because you want to make sure your start / end code is executed ... and you do not want to force subclasses to call this code.
source share