2011. 5. 21. 11:52

자바(Java)의 오버로딩(Overloading)

절차적 프로그래밍과 달리 객체방식의 자바에서는 파라미터 또는 인자라고 불리는 메시지의 갯수와 데이터 타입을 달리하여 같은 이름의 메소드를 여러 개 만들 수 있다. 그런 다음 호출할 때 메시지의 형식과 갯수만 맞춰 주면 가상 머신이 자동으로 해당 메소드를 알아서 호출하고, 처리해 주게 된다. 이것은 '생성자'에서도 동일하게 적용되며, 이것을 '오버로딩(Overloading)'이라고 하는데 '오버라이딩(Overriding)'과 더불어 자바의 '다형성(Polymorphism)'에 관련되는 중요한 개념이다.

  1: public class OverLoading2 {
  2:  public int add(int num1, int num2) {
  3:   return num1 + num2 ;
  4:  }
  5: 
  6:  public double add(double num1, double num2) {
  7:   return num1 + num2 ;
  8:  }
  9: 
 10:  public double add(int num1, int num2, double num3) {
 11:   return num1 + num2 + num3 ;
 12:  }
 13: 
 14:  public static void main(String[] args)  {
 15:   OverLoading2 ol = new OverLoading2() ;
 16: 
 17:   int intAdd ;
 18:   double doubleAdd ;
 19:   
 20:   intAdd = ol.add(5, 8) ;
 21:   System.out.println(intAdd) ;
 22:   
 23:   doubleAdd = ol.add(8.8, 5.5) ;
 24:   System.out.println(doubleAdd) ;
 25: 
 26:   doubleAdd = ol.add(8, 5, 8.8) ;
 27:   System.out.println(doubleAdd) ;
 28:  }
 29: }