반응형
오버로딩이란?
한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것.
오버로딩 특징?
- 자바는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없다. 하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다.
- 메소드 오버로딩은 서로 다른 시그니처를 갖는 여러 메소드를 같은 이름으로 정의하는 것.
- 다형성을 구현하는 방법 중 하나.
- 리턴타입과는 무관하다.
오버로딩을 사용하는 이유?
1) 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있다.
2) 메서드 이름 절약 가능
* 오버로딩 대표적 함수 : print함수.
- println() 메서드는 오버로딩 되어있기 때문에 int, string, boolean 인자 등 모두 받아서 동작한다.
- 오버로딩이 없다면?
int형 인자를 받는 printlnInt(), string 인자를 받는 printlnString() 과 같이 매번 다른 타입을 출력하려면 각 다른 이름의 print 함수가 있어야한다.
예시)
public class Overloding {
void add(){
}
void add(int x){ //매개변수의 유무
}
void add(long l){ //타입의 차이
}
void add(int x, int y){ //갯수의 차이
}
void add(int x, long i){
}
void add(long x, int y){ //위치의 차이
}
// int add() { //리턴타입이 void, int로 다르지만 오버로딩 불가능하다.
// }
}
public class MyMath {
int add(int a,int b) {
System.out.println("add(int a,int b)");
return a+b;
}
long add(long a,long b) {
System.out.println("add(long a,long b)");
return a + b;
}
int add(int[] a) {
System.out.println("add(int[] a)");
int result = 0;
for(int i : a) {
result += i;
}
return result;
}
}
반응형
'java' 카테고리의 다른 글
0929_this. / this() (0) | 2022.09.29 |
---|---|
0929_생성자 (0) | 2022.09.29 |
0929_static method (0) | 2022.09.29 |
0928_최대값 출력 메소드(연습) (0) | 2022.09.28 |
0928_참조형 변수 (배열 타입) (0) | 2022.09.28 |