This question already has an answer here:
I've always used public methods and recently been advised by one of my friends to always avoid defining methods as public, as far as possible, though I have worked in any commercial company I have never "really" understood the concept of why
public methods are not "safe to use at times".
I have worked a lot with c# and please don't get me wrong I have used other access types such
protected and I know how they "work" but never really understood why you should define methods with those access levels, especially in production.