What is better practise and why: accessing base class variables through a protected field or a public getter on the private field.
(The getter will be public regardless)
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If there’s going to be a public getter anyway, why would you want to expose the field itself more widely than absolutely necessary? That means it’s immediately writable by subclasses (unless it’s final to start with).
Personally I like all my fields to be private: it provides a cleaner separation between API and implementation. I regard the relationship between a superclass and a subclass as similar to that of a caller and callee – changes to the underlying implementation shouldn’t break subclasses any more than they should break callers. The name of a field is an implementation detail which shouldn’t impact other classes.
Admittedly my view is occasionally seen as somewhat extreme…