안녕하세요. 도미닉입니다.
오늘은 오버로딩과 오버라이딩에 대해서 알아보겠습니다.
오버로딩(overloading) 이란 같은 이름의 메소드를 매개변수가 다르게 여러번 선언할 수 있는 것을 의미합니다.
오버로딩에는 생성자 오버로딩과 메소드 오버로딩이 있습니다.
init 생성자를 매개변수 숫자를 다르게 해서 두번 선언했습니다.
이러한 것을 생성자 오버로딩이라고 합니다.
eat 메서드를 매개변수 숫자를 다르게 해서 두번 선언했습니다.
이러한 것을 메서드 오버로딩이라고 합니다.
오버라이딩(overriding) 은 상위 클래스에서 선언한 메서드를 하위 클래스에서 재정의해서 사용하는 것을 의미합니다.
위에 오버로딩의 예제를 들었던 소스에서 People 클래스의 eat 메서드를 선언했었습니다.
Student 클래스는 People 클래스를 상속받습니다.
eat 라는 메서드를 재정의하려고 하자 오류가 발생했습니다.
Overriding 임에도 불구하고 override 라는 키워드를 앞에 적어주지 않아서 오류가 발생합니다.
앞에 override 를 붙여주니 제대로 실행 되었습니다.
오버라이딩은 매개변수의 이름이나 타입이 달라지면 오류 발생합니다.
오버로딩과 오버라이딩의 성립 조건은 아래 표와 같습니다.
구분 | 오버로딩(Overloading) | 오버라이딩(Overriding) |
메서드 이름 | 동일 | 동일 |
매개변수의 이름, 타입 | 다름 | 동일 |
리턴 타입 | 상관없음 | 동일 |