Sherry IT Blog

[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding) 본문

JAVA

[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)

sherrylover 2017. 1. 26. 17:17
728x90
반응형

얼마전 지인이 면접에서 오버로딩과 오버라이딩 질문을 받았다고 한다.

 

 

오랜만에 들어보는 오버로딩 오버라이딩....

 

C언어 들을때인가 방학때 공부했었던 기억이 나는데 이젠 가물가물

 

의미는 알지만 헷갈리기도하고, 기초다지는게 부끄러운건 아니니깐 개념을 잡고가고자 한번 더 알고가기.

 

 

 

일단. 오버로딩과 오버라이딩의 개념을 잡고가기

 

 

 

 

 

오버로딩(Overloading) 이란?

 

같은이름의 메소드를 여러개 가지면서, 매개변수 타입과 개수를 다르게 기술하는것

 

 

즉, 예를 들면

 

오버라이딩을 같은 클래스내에서 같은 이름의 메소드(함수)를 사용하는 것이리고 생각할 수 있다.

 

 

 

 

 

 

 

하지만 위에처럼 한 클래스안에 같은 이름의 메소드를 사용하면 왼쪽의 빨간점처럼 Duplicate method 라는 경고문구가 나온다.

 

 

 

그래서 오버로딩은 같은 이름의 메소드를 사용하되 매개변수 타입이 달라야하고 / 매개변수 개수가 달라야한다.

 

둘중에 하나만 만족해도 됨.

 

 

1. 매개변수 타입이 다를 때

 

 

한 클래스(outPut) 안에서 같은 메소드(testA) 이름으로 메개변수 타입을 다르게 주었다.(String,int 형)

 

 

 

 

2. 매개변수 개수가 다를 때

 

 

한 클래스(outPut) 안에서 같은 메소드(testA) 이름으로 메개변수 타입을 다르게 주고.(String,int 형)

 

매개변수 개수도 다르게 했다. (매개변수 타입 같게해줘도 됨)

 

 

 

음 아마..개인적인 생각으로는 오버로딩이 없었다면 유지보수할때 소스가 매우 더러워질듯..

 

 

기능이 추가될때 메소드를 추가하는게 더 효율적일것 같다. 상황에따라 다르겠지만!

 

 

 

 

2. 오버라이딩(Overriding) 이란?

 

상위 클래스(부모)가 가지고 있는 메소드를 상속받아 하위 클래스(자식)가 재정의해서 사용하는 것

 

즉, 부모가 쓰고있는 함수를 자식들이 상속받는 개념이라고 생각하면되겠다.

 

부모클래스에서 상속받은 변수와 메소드는 자식클래스에서도 동일하게 사용가능하다.!! 이건 코딩하면서 제일 자주보는 개념!

 

 

 

 

 

즉, 부모클래스에서 쓰는 메소드와 변수를 자식클래스에서도 사용함으로 개발적인 효율성을 높일 수 있겠다.

 

짧은 지식으로 쓰려니 기본은 여기까지마무리하고..

 

 

참고로 Static 메소드는 오버라이딩을 허용하지 않는다!! 그이유는 아래를 참고.. 캡쳐 포스팅 귀찮..

 

참고 URL : http://itpangpang.xyz/105

 

 

 

728x90
반응형
Comments