[ TIL ] java 메서드 오버로딩

ijnuyh·2025년 4월 15일

TIL

목록 보기
6/16

Method Overloading

하나의 클래스 안에, 동일한 이름의 메서드를 여러 개 정의할 수 있음.
단, 자료형이 다르고 같은 작업을 하는 함수를 정의할 때 사용

특징

  1. 메서드의 이름이 동일
  2. 같은 클래스 내부
  3. 반환형은 같지않아도 됨
  4. 매개변수의 개수 or 타입이 달라야 함!

예시코드

Area 라는 클래스를 생성해서 getArea라는 메서드 생성

  • 해당 메서드는 도형의 길이를 입력하여 넓이를 출력
  • 입력한 이름과 매개변수 형식이 같지않으면 error

삼항연산자 사용으로 if-else문을 사용하지않으려 노력했습니다..

package week6;

class Area{
    String getArea(String x,int a, int b){
        String match = (x.equals("삼각형")) ? "true" : "error";
        int tri = a*b/2;
        
        String area = (match.equals("error")) ? "error" : Integer.toBinaryString(tri);
        return area;
    }

    String getArea(String x,double a){
        String match = (x.equals("원")) ? "true" : "error";
        double circle = a*a*(3.14);
        
        String area = (match.equals("error")) ? "error" : Double.toString(circle);
        return area;
    }

    String getArea(String x,double a, double b){
        String match = (x.equals("사각형")) ? "true" : "error";
        double square = a*b;
        
        String area = (match.equals("error")) ? "error" : Double.toString(square);
        return area;
    }
}

삼각형 - str , int , int
원 - str, double
사각형 - str, double, double

이처럼 같은 이름의 메서드에 매개변수의 형식을 다르게해서 오버로딩을 진행.

public class에서 실행해보면,


public class HW {
    public static void main(String[] args) {
        
        Area aa = new Area();
        System.out.println(aa.getArea("삼각형",4, 5));
        System.out.println(aa.getArea("원",4));       
        System.out.println(aa.getArea("사각형",4.5, 2.3));
        System.out.println(aa.getArea("삼각형",4.5, 2.3));
    }

}

10
50.24
10.35
error

위처럼 나오게 된답니당

오버로딩을 쓸 때는 꼭 매개변수의 형식을 다르게 설정하기


그리고 생성자 코드블럭도 오버로딩이 가능한데, 생성자는 다음 TIL로 게재해보겠습니다

profile
ad astra per aspera

0개의 댓글