ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오버로딩 (overloading)
    공부/Java 2023. 12. 29. 05:36

    오버로딩 (overloading)

     

    자바에서는 한 클래스 내에 이미 사용하는 이름과 같은 메서드가 있더라고 매개변수의 개수 또는 타입이 다르면,

    같은 이름을 사용해서 메서드를 정의할 수 있다.

    오버로딩이란 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것이다.

     

    오버로딩이 성립하기 위한 조건

    1. 메서드 이름이 같아야 한다.
    2. 매개변수의 개수 또는 타입이 달라야 한다.
    3. 반환 타입은 관계없다.

     

    메서드의 이름이 같다 하더라도 매개변수가 다르면 서로 구별될 수 있어 오버로딩이 가능하다.

    위의 조건을 만족시키지 못하는 메서드는 중복 정의로 간주되어 컴파일 시 에러가 발생한다.

     

    예제

    public class ANewDream043 {
    	public static void main(String args[]) {
    		MyMath3 mm = new MyMath3();
    		System.out.println("mm.add(3, 3)  결과 :" + mm.add(3, 3));
    		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));
    	}
    }
    
    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("long add(int a, long b) - ");
    		return a + b;
    	}
    
    	long add(long a, int b) {
    		System.out.print("long add(long a, int b) - ");
    		return a + b;
    	}
    
    	long add(long a, long b) {
    		System.out.print("long add(long a, long 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;
    	}
    }

     

    결과

    int add(int a, int b) - mm.add(3, 3)  결과 :6
    long add(long a, int b) - mm.add(3L, 3) 결과 : 6
    long add(int a, long b) - mm.add(3, 3L) 결과 : 6
    long add(long a, long b) - mm.add(3L, 3L) 결과 : 6
    int add(int[] a) - mm.add(a) 결과 : 600

     

    실행결과를 보면 add 메서드가 println메서드보다 먼저 호출된다.

    아래 두 문장을 하나로 합친다면 main메서드의 println 메서드가 되기 때문이다.

    int result = mm.add(3, 3);
    System.out.println("mm.add(3, 3) 결과 : " + result);

    '공부 > Java' 카테고리의 다른 글

    객체 자신을 가리키는 참조변수 this  (4) 2024.01.04
    생성자 this()  (4) 2024.01.04
    static 메서드와 인스턴스 메서드  (0) 2023.12.24
    기본형 매개변수와 참조형 매개변수  (2) 2023.12.22
    메서드란?  (0) 2023.12.21
Designed by Tistory.