본문 바로가기

컴퓨터공학/Java

CS> Overriding 과 Overloading 은 뭘까요?

Method Overriding

부모에 상속받은 메소드를 자식에서 재정의하는 걸 의미한다.

부모에서 상속받은 메소드는 body가 구현되어 있는 일반적인 concrete 메소드일 수 있고

메소드 body가 없는 abstract 메소드가 될 수 있다.

키 포인트는 자식에서 입맛에 맞게 구체적으로 구현한다는 것이다. 

파라미터는 부모와 자식 모두 반드시 같아야 한다.

리턴 타입도 역시 같아야 한다. 

J2SE 1.5 이후에는 리턴 타입이 같거나 서브 클래스일 수 있다.

메소드 오버라이딩을 하는 이유는 

자식 클래스에서 필요에 의해 메소드 구현을 다양하게 할 수 있기 위함이다. 

 

Method Overloading 

동일한 이름을 가진 메소드들이 같은 클래스에 존재하고

메소드 파라미터 리스트를 통해 개별적인 메소드를 호출할 수 있다. 

이름은 같은데 서로 다른 메소드들이 존재한다.

파라미터는 모두 달라야 한다. 

리턴 타입은 같거나 다를 수 있다.

가독성을 높이기 위해서 사용한다. 

 

 

정리

Overriding Overloading
상속성 같은 클래스 존재
파라미터 같아야 함 파라미터 달라야 함
리턴 타입이 같거나 서브 클래스 리턴 타입이 같거나 달라야 함