[Java] overloading

SeongEon Kim·2022년 4월 26일
0

JAVA

목록 보기
22/52
  1. 오버로딩(overloading)의 정의

코드를 작성할때 기존의 계산기는 2개의 값(left, right)에 대한 연산(sum, avg) 만을 수행 할 수 있게 작성하였다고 가정하자.
그런데 만약 3개의 값을 대상으로 연산을 해야 한다면 어떻게 해야할까?
아래 코드를 참고해보자.

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 void sum(){
       System.out.println(this.left+this.right+this.third);
   }
     
   public void avg(){
       System.out.println((this.left+this.right+this.third)/3);
   }
}

중간에 setOprands 메소드가 이름이 같은데 매개 변수의 수와 내용이 다르다는 것을 확인할 수 있다. 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;
   }
    
   public void setOprands(int left, int right, int third){
       this.setOprands(left,right);
       System.out.println("setOprands(int left, int right, int third)");
       this.third = third;
   }
    
   public void sum(){
       System.out.println(this.left+this.right+this.third);
   }
     
   public void avg(){
       System.out.println((this.left+this.right+this.third)/3);
   }
}
  1. 오버로딩(overloading)의 규칙

    오버로딩에서 메소드의 이름은 같아야 하고, 매개변수는 달라야 하지만, 리턴 값은 같아야 한다.
    리턴 값만 다른것은 오버로딩이 이루어지지 않는다.
    매개 변수의 이름도 중요하지 않다.

  2. overriding VS overloading

    메소드 오버로딩(overloading)이라는 것은 같은 이름, 다른 메소드에 의해서 여러 개의 같은 이름의 메소드를 정의할 수 있게 해주는 것이고, 메소드 오버라이딩(overriding)은 부모 클래스의 메소드를 메소드의 이름과 매개 변수의 형식, 리턴 타입이 동일한 메소드를 자식 클래스에서 재정의할때 사용하는 것이다.

profile
꿈을 이루는 사람

0개의 댓글