'Overloading'에 해당되는 글 1건

  1. 2015.08.18 [JAVA] 메소드 오버로딩 & 오버라이딩

[JAVA] 메소드 오버로딩 & 오버라이딩

개발공부/JAVA / JSP 2015. 8. 18. 09:49

안녕하세요~ 공부를 시작하는데 정리하면서 같이 공유도 할겸 블로깅을 시작하게되었습니다.

혹시 생각하시는것과 다른것이 있거나, 혹은 틀린부분이 있다면 알고게시지만말고 알려주세요!!

 

오늘은 제가 항상 헷갈려하는 메소드 오버로딩과 오버라이딩에 대해서 정리를 해볼까 합니다.

정리하면서 개념좀 확실히 잡혀서 안헷갈렸으면 하는 바램이 있어요ㅠ

 

시작합니다!

 

1. 메소드 오버로딩

메소드 오버로딩은 하나의 클래스 안에서 같은 이름의 메소드를 여럿 생성하는것이라고 보시면 됩니다.

그런데 메소드명이 같으면, 메소드를 호출할때 어떻게 구분할까요?? 같은 이름의 메소드들 사이에 뭔가 차이점이 있으니 그걸 통해서 각각 구분을 하는거겠죠? 그 차이점은 크게 3가지로 볼수있습니다.


먼저 기존의 메소드를 확인하겠습니다.



1. 인자의 자료형

인자의 자료형 역시 메소드를 구분하는 기준점이 됩니다.

 



2. 인자의 갯수

같은 메소드명이 여러개있을때 인자의 갯수에 따라 구별이 가능합니다.

 


3. 인자의 순서

메소드가 넘겨받는 인자의 순서도 역시 메소드를 구분하는데 영향을 미칩니다.

 

4. 메소드를 호출

메소드를 호출할때의 모습입니다.


이런식으로 호출할때 어떤 메소드를 사용할지 알 수 있습니다.

툴에따라 다를수도 있어요..!!


이렇게 하나의 클래스 내에서 같은목적을 갖고있는 메소드들에게 같은 이름을 사용하려할때 메소드명을 목적에 맞게 지정해주면서 각 메소드들마다의 동작을 할 수 있게끔 하는것을 메소드 오버로딩 이라고 합니다.


2. 메소드 오버라이딩

메소드 오버라이딩은 하위 클래스에서 상위 클래스를 상속받아서 사용할 경우, 상위클래스에서 정의된 메소드를 하위클래스에서 필요에 맞게 재정의하여 사용하는것을 말합니다.

 

예를들어서 작업을 하는데 있어서 직상 상사 또는 선배와 같이 일을하는데, 이사람이

'이런 기능을 하는게 필요할거야. 내가 만들어뒀으니 그냥 써 찡긋★'

하면서 클래스를 하나 던져줬습니다. 그래서 '감사합니다!!' 하고 받아서 쓰고있는데 사용하다보니 제한이 있는걸 알게되었습니다. 그래서 클래스를 열어봤더니 매우 마음에 들지 않는거죠.

 



 

예시를 들면서 짰지만 정말 마음에 들지 않아요. 뭐 갯수가 한정되어있다면 할말없긴하지만... 여하튼!

이걸 전해받은 거는 정말 너무 싫었어요. 그런데 이걸 수정하자니 우리 착한 선배 or 상사님께 상처가 될까 말하기도 좀 그런겁니다. 그래서 저는 이렇게 다시 짜기로 했어요.

 



 

이렇게 하였을 경우 위의 방식보다는 활용도가 높죠. 경우에 따라 다르긴 하겠지만 적어도 글자수에 제한은 없으니까요. 제가 오버라이딩한 메소드와 상위클래스의 메소드의 결과를 비교해볼까요.





위아래 결과가 다른것을 확인할 수 있습니다.

위의 결과값은 0~9까지 10개의 문자를 입력해도 최대 8까지밖에 나오지 않아요.

그러나 아래는 입력한 만큼 별이 찍힙니다. 글자수에 제한을 두고싶지 않아서 재정의하여 사용한것입니다.


지금 이 상황은 제가 어거지로 만든겁니다. 그냥 설명하는거보다 이미지로 남는게 좀 더 쉽게 기억되지 않을까 하는 마음에... 그리고 위에서 이렇게 짜주는경우는 정말 흔치않아요. 그건 너무하잖아요..ㅠㅠ (혹시 있을지도 모르니 절대라고는 말 못하겠습니다.)

지금처럼 상위클래스의 내용을 하위클래스에서 필요에 맞게 재정의하여 사용하는것을 오버라이딩이라고 합니다.

 

 

3. 오버로딩 오버라이딩 차이

 

 

 

 오버로딩

오버라이딩 

 정의

 하나의 클래스안에서 동일한 이름의 메소드명으로 메소드를 재정의하여 사용하는것.

 상위 클래스에서 상속받은 메소드를 하위클래스에서 동일한 메소드명으로 재정의하는것.

조건

메소드의 인자의 갯수, 순서, 자료형에 따라 구분된다. 

메소드의 인자의 갯수, 순서, 자료형이 같아야한다.

목적

 이미 정의되어있는 메소드를 필요 또는 상황에 맞게 재정의하여 사용하기위함이다.

 

오늘 작업한 내용을 파일로 올려놓을께요!!

method.zip



다음에는 또 다른거 정리해야지.

'개발공부 > JAVA / JSP' 카테고리의 다른 글

[JAVA / JSP] MVC 패턴  (0) 2015.12.06
: