본문 바로가기
JAVA

11일차//[java]에서의 메소드 오버로딩(Overload)

by aesup 2021. 1. 25.
728x90

자바와 같이 클래스를 구현하는 언어에서는 한 클래스 내에서 같은 이름의 메소드 정의를 피하기 어려운 경우가 있다. 가령, 덧셈을 하기 위한 메소드를 구현한다고 생각해보면, add(int n1, int n2)처럼 매개변수 2개를 갖는 메소드와 add(int n1, int n2, int n3)와 같이 매개변수를 3개까지 가지는 메소드를 동시에 구현해야 할 수 있다.

그렇다면 완전히 동일한 기능을 하는데도 불구하고 메소드 이름을 일일이 달리하는 것은 매우 불편한 일이 될 것이다. 자바에서는 이러한 불편함을 없애기 위해서 메소드 오버로딩(Overload)을 지원한다.

 

 

메소드 오버로딩의 조건

 

  • 매개변수의 개수가 다른 경우
  • 매개변수의 자료형(data type)이 다른 경우
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class MainClass {
    public static void main(String[] args) {
        /*
         Over Load : 함수 메소드 명은 같고
         매개변수의 자료형이나 갯수가 다른것을 의미
         
         print(): 이미지를 Drawing
         print(int x, int y) : 이미지위에 이미지 Drawing
         print(char c)
         
         print(int x, int y)
         print(int y, int x)  ->이건 실행이 안된다.
         
         */
        
        
        method();
        method('a');
        method(3);
        method('a',2);
        method(2'a');
        
        int sum = sumProc(1,4,6,2,3);
        System.out.println("sum : " + sum);
        
        double avg = avg("hello",1,2,3,4,5);
        System.out.println("avg" + avg);
        
        
    }
    
    
    static void method() {
        System.out.println("method() 호출");
    
    }
    static void method(char c) {
        System.out.println("method(char c) 호출");
        
    }
    
    static void method(int i) {
        System.out.println("method(int i) 호출");
    }
    
    static void method(char c, double d) {
        System.out.println("method(char c , double d) 호출");
    }
    
    static void method(double d,char c) {
        System.out.println("method( double d,char c ) 호출");
    }
    
    //static void method(double d,char t) {   //이건 가인수만 바꿨기때문에 실행 안된다
    //.out.println("method( double d,char c ) 호출");
    //}
    
    //static int method()  - >이것도 실행이 안된다.
    
    //가변인수
    
    //자기가 설정한대로 값을 바꿀수있다.
    //매게변수는 맨끝에 써야한다
    static int sumProc(int...num) {
        int sum = 0;
        
        for (int i = 0; i < num.length; i++) {
            sum = sum + num[i];
        }
        
        return sum;
    }
    
    
    static double avg(String str, int...num) {
        int sum = 0;
        
        for (int i = 0; i < num.length; i++) {
        sum = sum + num[i];
        
        
        
        }
        return sum/num.length;
    }
    
    
    
    
    
    
    
    
    
    
}


출력

method() 호출
method(char c) 호출
method(int i) 호출
method(char c , double d) 호출
method( double d,char c ) 호출
sum : 16
avg3.0
cs

참고:JAVA의 오버로딩(Overload) (velog.io)

 

728x90