[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)
얼마전 지인이 면접에서 오버로딩과 오버라이딩 질문을 받았다고 한다.
오랜만에 들어보는 오버로딩 오버라이딩....
C언어 들을때인가 방학때 공부했었던 기억이 나는데 이젠 가물가물
의미는 알지만 헷갈리기도하고, 기초다지는게 부끄러운건 아니니깐 개념을 잡고가고자 한번 더 알고가기.
일단. 오버로딩과 오버라이딩의 개념을 잡고가기
오버로딩(Overloading) 이란?
같은이름의 메소드를 여러개 가지면서, 매개변수 타입과 개수를 다르게 기술하는것
즉, 예를 들면
오버라이딩을 같은 클래스내에서 같은 이름의 메소드(함수)를 사용하는 것이리고 생각할 수 있다.
하지만 위에처럼 한 클래스안에 같은 이름의 메소드를 사용하면 왼쪽의 빨간점처럼 Duplicate method 라는 경고문구가 나온다.
그래서 오버로딩은 같은 이름의 메소드를 사용하되 매개변수 타입이 달라야하고 / 매개변수 개수가 달라야한다.
둘중에 하나만 만족해도 됨.
1. 매개변수 타입이 다를 때
한 클래스(outPut) 안에서 같은 메소드(testA) 이름으로 메개변수 타입을 다르게 주었다.(String,int 형)
2. 매개변수 개수가 다를 때
한 클래스(outPut) 안에서 같은 메소드(testA) 이름으로 메개변수 타입을 다르게 주고.(String,int 형)
매개변수 개수도 다르게 했다. (매개변수 타입 같게해줘도 됨)
음 아마..개인적인 생각으로는 오버로딩이 없었다면 유지보수할때 소스가 매우 더러워질듯..
기능이 추가될때 메소드를 추가하는게 더 효율적일것 같다. 상황에따라 다르겠지만!
2. 오버라이딩(Overriding) 이란?
상위 클래스(부모)가 가지고 있는 메소드를 상속받아 하위 클래스(자식)가 재정의해서 사용하는 것
즉, 부모가 쓰고있는 함수를 자식들이 상속받는 개념이라고 생각하면되겠다.
부모클래스에서 상속받은 변수와 메소드는 자식클래스에서도 동일하게 사용가능하다.!! 이건 코딩하면서 제일 자주보는 개념!
즉, 부모클래스에서 쓰는 메소드와 변수를 자식클래스에서도 사용함으로 개발적인 효율성을 높일 수 있겠다.
짧은 지식으로 쓰려니 기본은 여기까지마무리하고..
참고로 Static 메소드는 오버라이딩을 허용하지 않는다!! 그이유는 아래를 참고.. 캡쳐 포스팅 귀찮..
참고 URL : http://itpangpang.xyz/105