개발/JAVA
오버로딩
에크키키
2022. 7. 11. 12:54
한 클래스 내에 같은이름의 메서드를 여러개 정의 하는 것 ex)println메서드
오버로딩 조건
1.메서드 이름이 같아야한다.
2.매개변수의 개수 또는 타입이 달라야한다.(반환타입은 아무런 영향을 주지않음)
오버로딩 예X 반환타입은 영향을 주지않음.
int add(int a ,int b){return a+b;}
long add(int a, int b){return (long)(a+b);}
오버로딩의 예- 같은 일을 하지만 매개변수를 다르게
long add(int a, long b){retrun a+b;}
long add(long a,int b){return a+b;}
실행결과
int add(int a, int b) - mm.add(3,3) 결과 :6
public class OverloadingTest {
public static void main(String[] args) {
MyMath3 mm= new MyMath3();
System.out.println("mm.add(3,3)결과:" + mm.add(3,3));
// 위의 문장을 두문장으로 표현하면
// int result =mm.add(3,3);
// System.out.println("mm.add(3,3)결과:"+ result;
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.println("mm.add(a)결과 :"+mm.add(a));
}
}// add 메서드의 printf가 먼저 출력, println메서드 출력하려면 add메서드 결과가 먼저 계산되어야 하기 때문
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("int add(int a, int b)-");
return a+b;
}
long add(long a,int b) {
System.out.print("int add(int a, int b)-");
return a+b;
}
long add(long a,long b) {
System.out.print("int add(int a, int b)-");
return a+b;
}
int add(int[] a) {//배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print("int add(int[] a)-");
int result=0;
for(int i=0;i<a.length;i++) {
result += a[i];
}
return result;
}
}