I've seen some posts which has strong reason to avoid using protected:
And there are some other posts suggested we don't need inheritance actually:
And some other posts suggested that inheritance can have alternatives:
So I have a rather 'modern' idea : If 'protected' field is so harmful, should OOP languages eliminate keyword 'protected' in order to force programmers to write clean and high quality codes? If the answer is 'NO!' , what is the reason to allow 'protected' fields? Eg: when do we need 'protected' actually?