본문 바로가기

프로그래밍/Java (기초)

overloading

반응형
class Calculator{
int left, right;
int third = 0;
public void setOprands(int left, int right){
System.out.println("setOprands(int left, int right)");
this.left = left;
this.right = right;
}


다음의 예제에서 setOprands 메소드의 매개변수를 3개로 변경하여 3가지의 숫자를 더하려고 할때처럼
하나의 메소드에 여러가지 경우의 수.. 즉 같은 이름에 여러기능을 추가하고자 할때 사용할때
이를 메소드의 오버로딩(method overloading)이라 한다.


class Calculator{
int left, right;
int third = 0;
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 class CalculatorDemo {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.setOprands(10, 20, 30);


다음 예시처럼 setOprands에 매개변수가 2개가 아닌, 3개의 메소드를 똑같은 이름으로 선언할 경우
자바는 이를 같은 메소드로 판단하지 않고, 이름이 같은 다른 메소드로 판단하여.
main에서 2개의 매개변수를 입력할 경우, 그에 맞게 2개의 매개변수를 사용하는 메소드로 동작하고
마찬가지로 3개의 매개변수를 입력할 경우, 그에 맞게 자바는 3개의 매개변수를 사용하는 메소드로 동작하게 된다.


이경우  

첫번째 setOprands엔 

this.left = left;
this.right = right;


두번째 setOprands엔 
this.left = left;
this.right = right;
this.third = third;



위 처럼 각 메소드에는 동일한 동작을 하는 코드가 등장한다

super.setOprands



https://opentutorials.org/course/1223/6088


이때 같은 이름의 메소드가 다른 매개변수(입력값으로 이루어져 여러개로 선언될때 이를 메소드 오버로드라고 한다.


(예시 SetOprand 메소드가 여러개 선언되어 있으며 인자가 각각 다르다)



반응형

'프로그래밍 > Java (기초)' 카테고리의 다른 글

객체지향 프로그래밍  (1) 2016.04.13
overriding  (0) 2016.03.28
인터페이스(interface)  (0) 2016.03.26
상속(inheritance)  (0) 2016.03.26
초기화와 생성자(Constructor), this, super  (0) 2016.03.26