오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말한다. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용한다.
상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의를 하는 것을 말한다. 상속 관계 클래스에서 사용되며 static, final 로 선언한 메서드는 오버라이딩이 불가능하다.