본문 바로가기

[TIL] 메소드 오버로딩

인포꿀팁 발행일 : 2020-08-03

메소드 오버로딩이란?

한 클래스 내에서 이름이 같은 메소드를 정의하는 것

조건

  • 매개변수의 타입이 다르거나 매개변수의 개수가 달라야한다.
    • 오버로딩 된 메소드는 매개변수에 의해서만 구분된다.
  • 매개변수는 같으나 반환형이 다를 경우 컴파일 오류가 발생한다.
    • 메소드 리턴 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

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
package ex0804;
 
public class Overloading_Ex1 {
 
    public static void main(String[] args) {
        User3 ob = new User3();
        
        short a =10;
        int b=20;
        long c=30;
        Short d=40;
        
//        중복정의 우선순위
//        기본 자료형은 먼저 기본자료형에서 처리함
//        동일타입 > 가장 가까운 큰자료형 > Wrapper 클래스
        
        ob.print();
        ob.print(a); // int : 10
        ob.print(b); // int : 20
        ob.print(c); // long : 30      
        ob.print(d); // Short : 40      
        
    }
 
}
//overloading : 중복정의
//동일한 클래스에서 메소드의 이름은 동일하지만
//매개변수의 개수가 다르거나 메개변수의 타입이 다른 경우
 
class User3{
    public void print() {
        System.out.println("인자없는 메소드..");
//        컴파일 오류 : 매개변수가 같으면(타입과 개수) 중복 정의가 아님
//        public int print() {
//            return1;
//        }
    }
    //Short : 기본자료형인 short를 클래스로 만들어 놓은 Wrapper 클래스
    public void print(Short a) {
        System.out.println("Short:"+a);
    }
    public void print(int a) {
        System.out.println("int:"+a);
    }
    //Long : 기본자료형인 long을 클래스로 만들어 놓은 Wrapper 클래스
    public void print(Long a) {
        System.out.println("long:"+a);
    }
}
cs
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
package ex0804;
 
public class Overloading_Ex2 {
 
    public static void main(String[] args) {
        User4 u = new User4();
        int a;
        double b;
        
        a=u.area(10,5);
        u.write(a);
        u.write("사각형",a);
        
        b=u.area(5);
        u.write(b);
        u.write("원",b);
    }
}
//사각형 넓이:50
//사각형:50.0
//원 넓이:78.5
//원:78.5
 
class User4{
    public int area(int w, int h) {
        return w*h;
    }
    
    public double area(int r) {
        return r*r*3.14;
    }
    public void write(int s) {
        System.out.println("사각형 넓이:"+s);
    }
    public void write(double s) {
        System.out.println("원 넓이:"+s);
    }
    public void write(String t, double s) {
        System.out.println(t+":"+s);
    }
}
cs

 

 

'Language > JAVA' 카테고리의 다른 글

[TIL] 비정형 인자 (가변 인수)  (0) 2020.08.04
[TIL] 재귀 호출  (0) 2020.08.04
[TIL]클래스의 활용  (0) 2020.08.03
[TIL]메소드  (0) 2020.07.31
[TIL] 참조 변수  (0) 2020.07.31

댓글