Overloading (오버로딩)
- 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것
오버로딩의 성립 조건
- 메서드 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다
- 반환 타입은 관계 없다.
오버로딩의 장점
- 사용자가 매개변수의 순서를 외우지 않아도 사용 가능 (편의성)
오버로딩의 단점
- 중복적으로 의미 없이 생성하는 경우, 실질적으로 필요한 구현 메서드 찾기에 어려움 (복잡성)
더보기
더보기
class Calc {
int a, b;
int c, d;
double x, y;
// 두 정수를 "더하는 메서드"
int add (int a, int b) { return a + b; }
// 실제 값 차이 여부와 반환타입의 차이 여부는 오버로딩과 관련 X
// >> 반드시!! 매개변수의 개수 또는 타입이 달라야 함!!
// long add (int c, int d) { return c + d; } - Error
// ===매개변수의 타입 차이===
double add(double x, double y) { return x + y; }
double add(int a, double y) { return a + y; }
double add(double x, int b) { return x + b; }
// ===매개변수의 개수 차이===
int add (int a, int b, int c) { return a + b + c; }
// cf) 오버 로딩 사용 이유
// 1. 메서드가 수행하는 기본적인 작업이 동일할 때, 같은 이름 사용 가능
// : - 코드를 더 명확하고 가독성 있게 작성 가능
// 2. 코드의 재사용성이 높아짐
// 3. 컴파일 시 타입 체크를 강화 - 올바른 매개변수 타입을 가진 메서드를 선택
}
public class Overloading01 {
public static void main(String[] args) {
Calc calculator = new Calc();
System.out.println(calculator.add(10, 20));
System.out.println(calculator.add(10.0, 20.5));
System.out.println(calculator.add(10, 20.3));
System.out.println(calculator.add(10.1, 20));
System.out.println(calculator.add(10, 20, 30));
}
}
(예제 코드)
더보기
더보기
// 음식점 클래스
// : 다양한 방법으로 주문을 받는 메서드 정의
class Restaurant {
// 메서드 정의
// : placeOrder 주문 메서드
// >> 메뉴 이름(String dish)
// >> 메뉴 이름, 수량 제공(int quantity)
// >> 메뉴 이름, 특별 요청 사항 제공(String specialRequests)
// >> 메뉴 이름, 수량 제공, 특별 요청 사항 제공
void placeOrder(String dish){
System.out.println("메뉴 이름: " + dish);
}
void placeOrder (String dish, int quantity) {
System.out.println("메뉴 이름: " + dish + ", 수량 제공: " + quantity);
}
void placeOrder(String dish, String specialRequests) {
System.out.println("메뉴 이름: " + dish + ", 특별 요청 사항 제공: " + specialRequests);
}
void placeOrder(String dish, int quantity, String specialRequests) {
System.out.println("메뉴 이름: " + dish + ", 수량 제공: " + quantity + ", 특별 요청 사항 제공: " + specialRequests);
}
// >> 각 메서드에서 매개변수의 데이터값을 출력
}
public class Overloading02 {
public static void main(String[] args) {
// 인스턴스 생성
Restaurant order1 = new Restaurant();
order1.placeOrder("햄버거");
order1.placeOrder("피자", 2);
order1.placeOrder("파스타", "치즈 많이");
order1.placeOrder("샐러드", 2, "드레싱 없이");
}
}
'Java' 카테고리의 다른 글
[Java] Inheritance (0) | 2024.09.09 |
---|---|
[Java] Constructor (0) | 2024.09.06 |
[Java] Method (0) | 2024.09.06 |
[Java] Object(객체) (0) | 2024.09.05 |
[Java] Array(배열) (0) | 2024.09.05 |