알게된것,복습한것,헷갈렸던것 정리

오버로딩(Overloading) 이란?

ysrec328 2025. 9. 27. 21:35

 

같은 이름의 메서드(또는 생성자) 를 매개변수의 개수나 타입만 다르게 여러 개 정의하는 것

 

예제1: 일반 메서드 오버로딩

java

class Calculator {
	// 1) 두 정수 더하기
    public int add(int a, int b) {
    	return a + b;
    }
    
    // 2) 세 정수 더하기
    public int add(int a, int b, int c) {
    	return a + b + c;
    }
    
    // 3) 두 실수 더하기
    public double add(double a, double b) {
    	return a + b;
    }
}



사용 예시:
Calculator calc = new Calculator();
System.out.println(calc.add(2, 3));			// 5   -> int 2개
System.out.println(calc.add(2, 3, 4));		// 9   -> int 3개
System.out.println(calc.add(2.5, 3.2));		// 5.7 -> double 2개

 

 

예제 2 : 생성자 오버로딩

class Person {
	private String name;
    private int age;
    
    // 1) 이름만 받는 생성자
    public Person(String name) {
    	this.name = name;
        this.age = 0;	// 기본값
    }
    
    // 2) 이름과 나이를 받는 생성자
    public Person(Stiring name ,int age) {
    	this.name = name;
        this.age = age
    }
}​

 

 

 

 

사용 예시:

Person p1 = new Person("철수");			// 이름만 넣음 -> age = 0
Person p2 = new Person("영희", 20);		// 이름 + 나이 넣음

 

 

 

 

ErrorResponse 에 적용된 오버로딩

ErrorResponse도 같은 원리

 

에러가 하나일 때 -> new ErrorResponse(time, 400, "메시지", "/api")

에러가 여러 개일 때 -> new ErrorResponse(time, 400, "메시지", "/api", errorsMap)

 

->

이렇게 상황별로 다른 형태의 생성자를 제공하기 위해 오버로딩을 쓴 것 

 

 

 

 

최종 정리

생성자를 두 개 만든 이유 = 오버로딩(Overloading) -> 상황에 따라 객체를 편리하게 만들 수 있도록 하기 위해서.