오버로딩(Overloading)
- 다른 매개변수를 가진, 같은 이름의 메소드를 선언할 수 있도록 하는 메소드명 재사용 기법
일반적으로 메소드는 주어진 매개변수를 사용하여 정해진 소스코드를 실행하는 기능을 지닌다.
이때, 만약 같은 기능을 실행하는 메소드일 경우, 굳이 이름을 여러개로 만들 필요가 있을까?
ㄴㄴ! 아니다!
이런 문제점에 착안하여 같은 기능을 실행하되, 사용하는 매개변수가 다르면 같은 이름을 가지도록 하는 기술이 오버로딩이다.
오버로딩 구현 시 주의해야 할 규칙
- 메소드 명은 반드시 같아야 한다.
- 매개변수의 갯수나 자료형, 선언 순서가 반드시 달라야 한다.
- 반환 자료형, 접근 제한자는 달라도 된다. (오버로딩에 영향을 미치지 않는다.)
// 되는 경우 ======================================
public double sum(int num1, double num2) {
return num1 + num2;
}
public double sum(double num1, int num2) {
return num1 + num2;
}
public double sum(double num1, double num2, double num3) {
return num1 + num2 + num3;
}
오버로딩이 안되는 경우
- 동일한 메소드를 만들 경우
- 반환 자료형만 다를 경우
- 접근 제한자를 다르게 만들 경우
접근 제한자와 반환자료형은 오버로딩과 상관 없다. 달라도 의미가 없다는 것.
오버라이딩
- 부모와 같은 이름의 메소드를 가질 경우 이름이 동일하여 원래 누구의 것인지 헷갈리는 상황이 발생할 수 있다.
- 이를 방지하기 위해 부모와 같은 이름을 메소드로 재정의할 경우
- @Override 어노테이션을 달아준다.
- @(어노테이션) : JVM이 컴파일할 때에 해당 코드를 읽고 어떤 처리를 해야 하는지 가이드해주기 위한 명령어
오버라이드 성립 조건
- 부모 메소드와 반환 자료형, 메소드명, 매개 변수 자료형이 모두 일치해야 한다.
- 접근 제한자를 변경할 경우 부모가 가진 원조 메소드보다 더 큰 범위로만 변경할 수 있다.
- 예외 처리 시 (try catch) 부모 메소드 보다 예외의 갯수가 더 많으면 안된다.
정리
- 오버로딩은 한 클래스 내에서 같은 이름의 메소드를 여러번 정의하는 것이다. 같은 메소드이지만 사용하는 자료형이나 매개변수가 다르다.
- 오버라이딩은 자식클래스(sub class)가 부모 클래스(super class)로부터 그대로 받아서 재사용하기 위해 쓰는 것. 고로 생산성&유지보수에 효과적이다. 사용하는 자료형이나 매개변수가 같다.
- 결론은 오버로딩과 오버라이딩은 아주 아예 다른 것이다.
반응형
'Java > 문법' 카테고리의 다른 글
[혼공학습단1기] 1주차 - 자바 설치, 이클립스 설치 (0) | 2019.07.27 |
---|---|
[한빛] 혼자 공부하는 자바 시작 (0) | 2019.07.26 |