
한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 말한다.
한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다.
메소드명이 같고, 매개변수의 개수나 타입이 달라야 한다, 주의점은 리턴 값만 다른 것은 로버로딩을 할 수 없다.
상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것이다.
메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 한다. (하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있다.)
부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다.
부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.
오버라이딩은 어노테이션에 속한다.