오버 로딩 은 하나 의 클래스 에서 같 은 이름 의 메소드 들 을 여러 개 가질 수 있 게 합니다 . 단 , 메 서드 인자 들 은 달라야 합니다 . ( 반환 타입 은 같 아도 되 고 달 라도 됩니다 . ) 인자 들 의 타입 이나 개수 가 다르 면 메소드 이름 이 같 더라도 어떤 메소드 를 호출 할지 컴파일러 가 알 수 있 기 때문 입니다 . 그런데 왜 굳이 이렇게 같 은 클래스 내 에서 메소드 이름 을 같 게 주 는 것 일까요 ? 유사 한 일 을 수행 하 면서 인자 만 다른 메소드 들 에 대해 각기 다른 이름 을 준다면 사용 하 기 매우 불편 할 것 입니다 . 마치 키패드 에 문자 용 키패드 를 따로 만들 고 , 게임 용 키패드 를 따로 만드 는 것 처럼 비 효율 적 인 것 이 죠 .