같은 이름의 메서드(또는 생성자) 를 매개변수의 개수나 타입만 다르게 여러 개 정의하는 것
예제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) -> 상황에 따라 객체를 편리하게 만들 수 있도록 하기 위해서.
'알게된것,복습한것,헷갈렸던것 정리' 카테고리의 다른 글
| RESTful API 란? (0) | 2025.11.26 |
|---|---|
| LIKE와 =(등호) 차이 (0) | 2025.10.03 |
| @NoArgsConstructor, @AllArgsConsturctor, @RequiredArgsConstructor 정리 (0) | 2025.09.11 |
| 파라미터와 기본생성자 (4) | 2025.08.01 |
| 테스트코드, 단위테스트 (2) | 2025.07.17 |