본문 바로가기

Programming Language/JAVA

[JAVA] 메소드 오버로딩

 

 

 

오버로딩이란?
: 메소드의 이름을 동일하게 만들고, 전달하는 인자의 개수에 따라서 어떠한 메소드를 호출할 것인지를 구분하는것이다.
  또한, 매개변수의 개수,자료형을 기준으로 찾는다. 만약 메소드의 이름이 같더라도 매개변수의 자료형과 개수가

  다르다면 다른 함수이다.


 많은분들이 헷갈리실부분은 오버로딩과 오버라이딩은 다른 개념입니다!!
오버로딩은 메소드 or 생성자의 이름이 무조건 같아야하지만, 매개변수와 개수, 자료형 등을 기준으로 나뉘는게 "오버로딩"이고, 
오버라이딩은 상속을 통해 부모클래스에서 물려받은 메소드를 자식클래스에서 재정의하는것을 "오버라이딩"이라고합니다.
**   오버라이딩은 "오버라이딩편"에서 자세히 설명해드리겠습니다.   **

 

 

 

public class Overloading{

	public int sumFunc(int su1, int su2) {
		return su1+su2;
	}
	public double sumFunc(double su1, double su2) {
		return su1+su2;
	}
	
	
	public static void main(String[] args) {
		Overloading ol = new Overloading();
		System.out.println("결과 : "+ol.sumFunc(10, 20));
		System.out.println("결과 : "+ol.sumFunc(10.0, 20.0));
	}

}

* 오버로딩 설명

Main메소드안에 Overloading클래스의 객체를 생성해줍니다.
현재 Overloading안에는 같은 메소드가 두개가있습니다. 하지만, 매개변수로 int와 double을 각각 받고있기에
다른 메소드라고 볼수있습니다. 이것을 오버로딩이라고합니다.
그러면 Main메소드에 객체를 통해 메소드를 호출해봅니다.
처음에는 10,20을 매개변수로보내면 int형이기에 당연히 int형으로 받는 메소드를 찾아갑니다.
다음은 10.0과20.0을 매개변수로보내면 double형이기에 double형을 받는 메소드를 찾아갑니다.
이것을 오버로딩이라고합니다.

 

 

 

 

 

public class Test {
	public int sumFunc(int su1, int su2) {
		return su1+su2;
	}
	public double sumFunc(double su1, double su2) {
		return su1+su2;
	}
	public int sumFunc(int su1) {
		return su1+123456;
	}
	
	
	public static void main(String[] args) {
		Test T = new Test();
		System.out.println("결과 : "+T.sumFunc(10, 20));
		System.out.println("결과 : "+T.sumFunc(10.11, 20.22));
		System.out.println("결과 : "+T.sumFunc(10));
	}

}

* 오버로딩 설명
이번에도 위와동일하게 메소드를 하나 더생성해봅니다.
int형으로 받는 동일한 메소드가 2개이지만, 매개변수의 개수가 다르기때문에 객체를 생성하고 메소드를 호출하면
매개변수를 잘맞게 넣어주면 에러없이 잘찾아가는것을 확인할수있습니다.
이것을 오버로딩이라고 합니다.