봉봉의 개인 블로그
오버로딩 본문
오버로딩(Overloading)
뭔가 배우기 전에 사전을 찾는 습관이 생겨버려서 찾아봤는데
Overloading은 "과적하다, 과부하" 이런 느낌에 뜻이군요...
사용해보면서 느껴보겠습니다
프로그래밍에서의 오버로딩을 한마디로 정의를 해보자면
"같은 클래스내에서 같은 이름의 메서드를 사용하는것"
한마디로 나타내보니 별거 없어보이네요 그대로 사용해보겠습니다.
사용해 보니 Duplicate method 어쩌구 뜨면서 에러가 나오네요 메서드가 똑같다 라고
에러를 띄어주네요. 생각해보면 당연한 에러입니다.. 구분할수가 없으니
오버로딩 사용에는 어쩔수 없이 조건이 붙게 됩니다.
① 매개변수 타입이 달라야 한다.
② 매개변수 개수가 달라야 한다.
2가지중 하나만 만족해도 사용이 가능해집니다. 조건에 맞춰서 사용해보겠습니다.
① 매개변수 타입이 달라야한다
② 매개변수 개수가 달라야한다
조건에 맞춰서 사용하니 동작이 잘 되네요.
사용법은 알았는데 왜 사용할까요? 좋은점이 있을까요?
실제로 개발을 하다보면 프로젝트가 커지고 여러사람과 공유하면서 개발하기 때문에
오버로딩을 사용하지 않으면 작성하는 사람이나 사용하는 사람이나 이름 짓기도 어렵고
알아보기도 힘이 들어서 효율성이 떨어집니다.
간단하게 더하기를 하려고 해도
오버로딩을 사용하면 void add(int a, int b ㆍㆍㆍ)
이렇게 편하게 add 하나만 외워두고 쓰면 되지만
오버로딩이 없다면 void add_two(int a, int b) void add_three(int a, int b, int c)
이렇게 복잡해 진답니다. 여기에서 int형 하나만이 아니고 float형까지
구분해서 더하려면 더 헷갈리겠죠??
사용해보니 오버로딩의 사전적 뜻을 얼추 맞춰보면 과적이 트럭한대에 계속 끊이없이
쌓는다는 뜻으로 생각하면 프로그래밍에서도 하나의 메서드이름으로 끝없이 사용할 수
있다는 의미가 아닐까 생각합니다.. 이 뜻이 아니면 어쩔수 없구요.
이상으로 마치고 오버로딩에 대해 더 알고 싶으신분들은 println()도 오버로딩이니
api doc 보셔도 되고, 직접 이클립스에서 뜯어보셔도 도움이 될 것 같습니다.
이클립스에서는 println() 하나 쓰시고 컨트롤 클릭하면 PrintStream.class가 열린답니다
사진 올리고 보니 저도 갑자기 분석하고 싶어지네요.
나중에 한번 println() 관련해서 글 올려보겠습니다.
-------------------------------------------------
이 부분은 몰라도 되는부분인데 실제로는 컴파일러가 컴파일과정에서
add(int a), add(int a, int b) 이렇게 들어가는것이 아니고
add(int a), add(int a, int b) --> add_a(int a), add_b(int a, int b)
이런식으로 변경을 해줍니다
'관련 지식' 카테고리의 다른 글
setAttribute getAttribute조사 (0) | 2017.04.19 |
---|---|
java Object data type조사 (0) | 2017.04.19 |
java data type 조사 (primitype(기본) 과 reference type(참조) (0) | 2017.04.09 |
JSP) 한글 깨짐 현상 처리 방법( GET방식,POST방식) (0) | 2017.04.07 |
get 과 post 의 차이점 (0) | 2017.04.06 |