프로그래밍 언어/Java

[java] 9강 overloading 이란?

happy_life 2021. 11. 16. 08:42

오버로딩은 다른 메소드가 같은 이름을 가질 수 있게 되는 것을 의미합니다. 

 

 

간단한 계산기 코드 

class cal1{
	int left, right;
		
	public void setOprands(int left, int right) {
		this.left = left;
		this.right = right;
	}
		
	public void sum() {
		System.out.println(this.left + this.right);
	}
}
	
public class cal{

public static void main(String[] args) {
	
	cal1 c1 = new cal1(); //객체화
	
	c1.setOprands(10, 20);
	c1.sum();
	
	
    }
}

이 더하기 계산 코드의 문제점은 무엇일까요??

 

바로 두 개만 더할 수 있다는 것입니다.

세 가지를 더하고 싶으나, 그렇게 되면 오류가 발생하게 됩니다. 

 

 

이런 경우 어떻게 하면  두 가지 수의 덧셈과 세 가지 수의 덧셈을 한 메소드로 동시에 처리할 수 있을까요?

바로 오버로딩을 사용하는 것입니다. 다음의 예제를 봐봅시다.

class cal1{
	int left, right,third;
		
	public void setOprands(int left, int right) {
		System.out.println("setOprands(int left, int right)");
		this.left = left;
		this.right = right;
	}
	
	public void setOprands(int left, int right, int third) {
		System.out.println("setOprands(int left, int right, int third)");
		this.left = left;
		this.right = right;
		this.third = third;
	}
	
		
	public void sum() {
		System.out.println(this.left + this.right + this.third);
	}
}
	
public class cal{

public static void main(String[] args) {
	
	cal1 c1 = new cal1(); //객체화
	
	c1.setOprands(10, 20); 
	c1.sum();
	
	c1.setOprands(10, 20, 30);
	c1.sum();
	
	
    }
}

똑같은 이름의 메소드를 선언해주고, 들어가는 매개 변수의 수만 바꿔준 코드입니다. 이게 어떻게 가능할까요? 중복돼서 에러가 날 것은데요. 하지만 자바 입장에서는 메소드 이름이 같다고 하더라도, 데이터 타입이나 매개 변수가 달라질 경우  다른 메소드로 인식하게 됩니다. 이것을 바로 메소드 오버로딩이라고 합니다.