[Java] 객체지향 프로그래밍(oop) - 메서드 오버로딩(method overloading)

SolChan Kim·2023년 11월 28일

📖메서드 오버로딩

메서드 오버로딩이란?

  • 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것
    • 간단히 오버로딩 이라고 부른다.

오버로딩의 조건

  • 메서드의 이름이 같아야 한다.

  • 매개변수의 개수 or 타입이 달라야 한다.

  • 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.

    • 리턴타입은 오버로딩을 구현하는데 아무 영향을 주지 못한다.

오버로딩의 예시

  • 오버로딩의 대표적인 예시로는 System.out.println메서드가 있다.
    • 다양하게 오버로딩된 메서드를 제공하여 모든 변수를 출력할 수 있다.
void println();
void println(boolean x);
void println(char x);
void println(char[] x);
void println(double x);
void println(float x);
void println(int x);
void println(long x);
void println(Object x);
void println(String x);
  • 매개변수의 이름이 다른 것은 오버로딩이 아니다.
int add(int a, int b){return a + b;}
int add(int x, int y){return x + y;}
  • 리턴타입은 오버로딩의 성립조건이 아니다.
int add(int a, int b){return a + b;}
long add(int a, int b){return a + b;}
  • 매개변수의 타입이 다르므로 오버로딩이 성립한다.
long add(int a, long b){return a + b;}
long add(long a, int b){return a + b; }
  • 오버로딩의 올바른 예시 : 매개변수는 다르지만 같은 의미의 기능을 수행한다.
int add(int a, int b){return a + b;}

long add(long a, long b){return a + b;}

int add(int[] a){
	int result = 0;
    
    for(int i=0; i < a.length; i++){
    	result += a[i];
    }
    return result;   
}

0개의 댓글