private이면 외부에서 호출 될리가 없기 때문에 문제가 있을 때 클래스 내에서만 보면 됨


protected는 상속관계 코드만 보면 될 거고 public이면 어디서 어떤놈이 뭔짓을 했을지 모름


함수가 싹다 public인 경우 인풋 값을 어떻게 넣을지 경우의 수가 많아지기 때문에 코드도 방어적으로 쓰게 됨


이게 개인프로젝트나 그냥 한 프로젝트라면 별 상관 없을지 모르지만 대형프로젝트거나 라이브러리 처럼 외부로 공유되는 경우에 싹다 퍼플릭이면 어질어질해짐