오버로딩과 오버라이딩의 차이

 


 

오버 로딩과 오버라이딩의 차이

 

함수 오버로딩(Overloading) 오버라이딩(Overriding)은 객체 지향 프로그래밍에서 중요한 개념이다.

 

함수 오버로딩(Overloading) 하나의 클래스 내에서 같은 이름을 가진 함수를 여러 개 정의하는 것을 의미한다. 이때 함수의 매개변수의 수나 타입, 반환값의 타입 등을 다르게 정의하여 사용합니다. 이렇게 정의된 여러 개의 함수 중에서 호출 시 전달된 인자와 가장 일치하는 함수가 호출된다.

 

예를 들어, C++에서 정수형 변수 두 개를 더하는 함수와 실수형 변수 두 개를 더하는 함수를 같은 이름으로 정의할 수 있다. 호출 시 전달된 인자의 타입에 따라 적절한 함수가 호출된다.

 

반면에 오버라이딩(Overriding) 상위 클래스에서 정의된 함수를 하위 클래스에서 재정의하는 것을 의미한다. 이때 하위 클래스에서 재정의된 함수는 상위 클래스에서 정의된 함수와 이름, 매개변수, 반환값이 같아야 한다. 하위 클래스에서 재정의된 함수가 호출될 때는 하위 클래스의 함수가 호출된다.

 

예를 들어, java에서 상위 클래스인 동물 클래스에서 정의된 소리를 내는 함수를 하위 클래스인 강아지 클래스에서 다시 정의할 수 있다. 이때 강아지 클래스에서 재정의된 함수가 호출되면 강아지 클래스에서 정의된 함수가 호출된다.

 

 

구분  오버로딩((Overloading)  오버라이딩(Overriding) 
메소드 이름  = =
매개변수, 타입  다름  =
리턴 타입  상관없음  =