I've seen some posts which has strong reason to avoid using protected:
Why have private fields, isn't protected enough?
Why is Clean Code suggesting avoiding protected variables?
And there are some other posts suggested we don't need inheritance actually:
Why should I prefer composition over inheritance?
And some other posts suggested that inheritance can have alternatives:
Is this a misuse of "composition over inheritance"?
Should I force "composition over inheritance" rule to class members?
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?