오버로딩이란? 서로 다른 시그니처를 갖는 여러 메소드를 하나의 이름으로 정의하는 것
오버라이딩이란? 상속 관계에 있는 상위 클래스에서 이미 정의된 메소드를 하위 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것
자바에서 하위 클래스는 상위 클래스의 private 멤버를 제외한 모든 메소드를 상속 받는다.
이렇게 상속받은 메소드는 그대로 사용해두 되며, 필요한 동작을 위해 재정의하여 사용할 수도 있다.
한마디로, 메소드 오버라이딩이란 상속받은 상위 클래스의 메소드를 재정의하여 사용하는것을 말한다.
자바에선 메소드 오버라이딩을 통해 상속받은 상위 클래스의 메소드를 하위 클래스에서 직접 재정의가 가능하다.
출력 결과
상위 클래스의 display() 메소드입니다.
하위 클래스의 display() 메소드입니다.
하위 클래스의 display() 메소드입니다.
예제에서 세 번째와 같은 인스턴스의 참조가 허용되는 이유는 바로 자바에서의 다형성 때문이다.
👉🏼다형성 관련 글 읽어보기
오버로딩과 오버라이딩은 그 단어의 유사함으로 인해 혼동하기 쉽다.
그치만 개념은 확실히 다르다
간단하게 정의하면 오버로딩은 새로운 메소드를 정의하는 것
오버라이딩은 상속받은 기존의 메소드를 재정의하는 것