같은 이름의 메소드나 함수를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하여 다양한 상황에서 호출할 수 있도록 하는 기법
① 메소드 이름 동일 : 오버로딩된 메소드는 동일한 이름 사용
② 매개변수 차이 : 오버로딩된 메소드들은 매개변수의 타입, 개수, 순서 등에서 차이가 있어야함
③ 반환타입만 다른경우 : 매소드의 반환 타입만 다른 경우는 오버로딩으로 인정되지 않음(꼭 매개변수가 달라야함)
상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의해서 사용하는 기법
상속관계에서 하위 클래스는 상위 클래스의 메소드를 자신의 필요에 맞게 재정의 가능
① 메소드 이름 == 시그니처 : 오버라이딩된 메소드는 상위 클래스의 메소드와 메소드 이름과 시그니처(매개변수 타입, 개수, 순서)가 동일해야함
② 상속 관계 : 오버라이딩은 상위 클래스에서 정의된 메소드를 하위 클래스에서 다시 정의하여 사용하는 것 == 상속관계
③ 다형성 지원 : 상위 클래스 타입으로 선언된 객체가 실제로는 하위 클래스의 인스턴스일 때, 오버라이딩된 메소드 호출
매서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것을 의미
리턴값만 다르게 갖는 오버로딩은 작성할 수 없음
기존에 없던 새로운 메서드를 정의하는 것
상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것을 의미
매서드 이름은 물론 파라미터의 개수나 타입도 동일해야하며, 주로 상위 클래스의 동작을 상속받는 하위 클래스에서 변경하기 위해 사용
상속받은 메서드의 내용만 변경하는 것