1. 학습목표
오버로딩에 대해서 이해할 수 있다.
2.필요 개념 문장정리
오버로딩
- 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다.
- 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩이라 한다.
- 오버로딩은 메서드 이름이 같아야하고 매개변수의 개수 또는 타입이 달라야 한다.
- 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
- 매개변수의 이름만 다르고 매개변수의 타입이 같으면 오버로딩은 성립하지 않는다.
- 매개변수와 개수는 일티하고 리턴타입만 다르면 오버로딩은 성립하지 않는다.
- 매개변수의 순서가 다른경우는 오버로딩으로 간주한다.
- 정의된 매개변수가 서로달라도 모두 매개변수로 넘겨 받은 값을 더해서 반환한다.
- 같은 일응 하지만 매개변수를 달리해야하는 경우에 이름은 같고 매개변수를 다르게 하여 오버로딩을 구현한다.
- 메서드의 이름만 보고도 메서드 기능이 같다는 것을 알 수 있다.
- 메서드의 이름을 절약할 수 있다.
3. 코드작성
class OverloadingTest {
public static void main(String args[]) {
MyMath3 mm = new MyMath3();
System.out.println("mm.add(3, 3) 결과:" + mm.add(3, 3));
System.out.println("mm.add(3L, 3) 결과:" + mm.add(3L, 3));
System.out.println("mm.add(3, 3L) 결과:" + mm.add(3, 3L));
System.out.println("mm.add(3L, 3L) 결과:" + mm.add(3L, 3L));
int[] a = {100, 200, 300};
System.out.print("mm.add(a)) 결과:" + mm.add(a);
}
}
class MyMath3 {
int add(int a, int b) {
System.out.print("int add(int a, int b) - ");
return a + b;
}
long add(int a, long b) {
System.out.print("long add(int a, long b) - ");
return a + b;
}
int add(long a, int b) {
System.out.print("long add(long a, int b) - ");
return a + b;
}
int add(long a, long b) {
System.out.print("int add(long a, long b) - ");
return a + b;
}
int add(int[] a) { // 배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print("int add(int[] a) - ");
for(int i = 0; i < a.length; i++) {
result += a[i];
}
return result;
}
}
실행결과
int add(int a, int b)- mm.add(3, 3) 결과: 6
long add(long a, int b) - mm.add(3L, 3) 결과: 6
long add(int a, 1ong b)- mm.add(3, 3L) 결과: 6
long add(long a, long b) - mm.add(3L, 3L) 결과: 6
int add(int[] a)- mm.add(a) 결과:600
4. 마무리
변수의 타입과 개수에 따른 오버로딩의 조건을 이해할 수 있었다.
구체적으로 어떻게 쓰일 때 오버로딩인지 알아가야겠다.
'언어 기초 > JAVA' 카테고리의 다른 글
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 인스턴스의 복사 (0) | 2024.01.30 |
---|---|
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 생성자 (0) | 2024.01.30 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 클래스 메서드와 인스턴스 메서드 (0) | 2024.01.18 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 메서드로 배열 다루기 (0) | 2024.01.17 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 매개변수 (0) | 2024.01.17 |