오버로딩(Overloading) vs 오버라이딩(Overriding)

 

자바에서 다형성을 지원하는 방법으로 메소드 오버로딩(Overloading) 오버라이딩(Overriding)이 있다.

 

결론부터 말하자면,


오버로딩(Overloading)은 기존에 없던 새로운 메서드를 정의하는 것이고,


오버라이딩(Overriding)은 상속 받은 메서드의 내용만 변경 하는 것이다.

 


간단하게는, 


오버로드(Overload)

메서드의 이름은 같고 파라메터의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다.

(리턴값만을 다르게 갖는 오버로드는 작성 할 수 없다.)



오버라이드(Override)

상위 클래스의 메서드를 재정의 하는 것이다.

메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 

사용된다.


 


좀 더 자세하게 가보자면,

 

1. 오버로딩 (Overloading)

오버로딩(Overloading)은 메소드 오버로딩과 생성자 오버로딩이 있다. 하지만 둘다 같은 개념이다.

같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 한다.

 

2. 오버라이딩 (Overriding)

상위 클래스가 가지고 있는 멤버변수가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다. 하지만, 하위 클래스에서 메소드를 재정의해서 사용할 수 있다.

상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술을 오버라이딩(Overriding) 이라고 한다.

 

오버로딩(Overloading)과 오버라이딩(Overriding) 성립조건


구분

오버로딩 

오버라이딩 

메소드 이름 

동일 

동일 

매겨변수, 타입 

다름 

동일 

리턴 타입 

상관없음 

동일 

 

 



'Develop > Java' 카테고리의 다른 글

자바 reflection  (0) 2016.11.17
문자열 "ABCDEFG"를 역순으로 출력  (0) 2016.11.17
JAVA의 접근제한자  (0) 2016.11.15
Java Collection Framework  (0) 2016.11.14
Abstract class vs Interface  (0) 2016.11.01

+ Recent posts