JAVA/java 이론

[자바JAVA] 메서드 오버로딩 overloading

자바칩 프라푸치노 2020. 10. 10. 07:38

이 게시물에는 아래의 내용이 포함되어있습니다.

1. 메서드 오버로딩

2. 오버로딩의 예

3. 오버로딩의 장점

4. 예제


 

1. 메서드 오버로딩

하나의 클래스에 같은 이름을 가진 메서드를 여러개 정의하는 것

메서드의 이름이 같고 매개변수의 개수와 타입이 다르다.

리턴타입이 다른 것은 오버로딩 성립안된다.

 

2. 오버로딩의 예

System.out.println메서드

같은 이름의 메서드에 매개변수타입이 다릅니다.

 

3. 오버로딩의 장점

하나의 이름의 메서드로 여러가지 기능을 구현할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package sec01_exam_overloading;
 
public class Overloading {
//add()오버로딩을 하고 있음. new의 개념 
    public int add(int a, int b) {
        System.out.print("int add(int a , int b) -");
        return a + b;
    }
    
    public long add(int a, long b) {
        System.out.print("int add(int a , long b) -");
        return a + b;
    }
    
    public long add(long a, int b) {
        System.out.print("int add(long a , int b) -");
        return a + b;
    }
    
    public long add(long a, long b) {
        System.out.print("int add(long a , long b) -");
        return a + b;
    }
    
    public int add(int[]arr) {
        //배열의 모든 요소의 합을 결과로 돌려준다.
        System.out.print("int add(int[]arr) -");
        int result = 0;
        for (int i = 0; i < arr.length; i++) {
            result +=arr[i];
            
        }return result;
    }
    
}
 
cs

 

add메서드를 오버로딩 하고 있습니다.

매개변수가 모두 다릅니다.

리턴 타입이 다른 것은 성립하지 않습니다.

 

실행클래스입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package sec01_exam_overloading;
 
public class OverloadingEx {
 
    public static void main(String[] args) {
    
        
        Overloading overloading = new Overloading();
        
        //매개변수의 개수와 타입에 따라서 호출되는 메서드가 달라짐을 기억하자.
         System.out.println("Overloading.add(3,3) 결과: " + overloading.add(33));
         System.out.println("Overloading.add(3L,3) 결과: " + overloading.add(3L, 3));
         System.out.println("Overloading.add(3,3L) 결과: " + overloading.add(3, 3L));
         System.out.println("Overloading.add(3L,3L) 결과: " + overloading.add(3L, 3L));
 
         
         int[] arr = new int[] {100,200,300};
         System.out.println("Overloading.add(arr) 결과: " + overloading.add(arr));
         System.out.println("Overloading.add(new int[] {1000,1400,1500}) 결과: "
                 + overloading.add(new int[] {1000,1400,1500}));
         
                 
    }
 
}
 
cs

같은 add를 호출했지만 매개변수에 따라서 다른 메서드를 호출하는 것입니다.

 


 

728x90