본문 바로가기

프로그래밍/JAVA

오버로딩(Overloading)과 오버라이딩(Overriding)를 사용하는 이유

오버로딩과 오버라이딩은 클래스의 다형성을 지원하는 방법이다. 


오버로딩이 지원되지 않으면 매개변수의 타입이나 개수가 다른 메소드를 여러개 만들어줘야 하는 단점이 있다. 

자바에서는 메소드의 이름이 같고 매개변수를 다른 메소드를 만들어 다형성을 지원한다.

여기서 오버로딩은 리턴타입은 전혀 영향을 주지 않고, 매개변수의 타입과 개수에만 영향을 받는다.


오버라이딩은 상속받은 클래스의 메소드가 하위 클래스에서 충분한 기능을 제공하지 않거나, 부족할 때 

상위 클래스로부터 상속받은 클래스를 재정의 하는 것이다.



두 방법은 이름이 비슷하기 때문에 용어에 관련된 측면에서 보면 굉장히 헷갈리게 해놨다. (나쁜놈들)


평생 헷갈릴것 같은 불길한 예감이 드는 것은 왜일까.


항목 

오버로딩 

오버라이딩 

함수명 

 같다 

같다 

매개변수, 타입 

 다르다

같다 

 리턴 타입

 상관 없음

같다 



아래의 표로 자주 보고 참고하도록 하자.


두가지 방법을 왜 사용하는지는 명확하게 알 수 있다.


1. 오버로딩 : 같은 동작을 해야 하는 메소드를 작성해야 하는데 매개변수가 다른 경우.


2. 오버라이딩 : 상속 받은 메소드를 다시 정의하고 싶을때.


주의사항


1. 상속 받은 클래스의 메소드를 오버라이딩 할 때, 스태틱으로 오버라이딩 하게되면 상위 클래스의 메소드가 하이딩처리 된다.

   그래서 문제없이 실행되지만 추천하는 방법이 아니므로 사용하지 않는다.

'프로그래밍 > JAVA' 카테고리의 다른 글

SimpleDateFormat 을 쓰는 이유  (0) 2019.02.12