※ 오버로딩 (Overloading):
오버로딩은 같은 메서드 이름을 가지고 매개변수의 개수나 타입을 다르게 하여 다양한 형태의 메서드를 정의하는 것
오버로딩된 메서드들은 같은 이름으로 호출되지만, 전달되는 인자에 따라 매개변수가 다른 버전의 메서드가 호출.
오버로딩은 메서드의 시그니처가 다르기 때문에 반환 타입이나 접근 제어자는 오버로딩에 영향을 주지 않는다.
상속과 관련 없이 하나의 클래스 내에서 메서드를 정의할 때 사용.
※ 메서드 이름 동일
매개변수의 갯수가 다르거나 자료형이 다르거나 순서가 달라야 한다. 리턴 타입은 아무 상관 없다
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
- Calculator 클래스는 add 메서드를 오버로딩한 것.
두 개의 버전의 add 메서드는 매개변수 타입이 다르므로 서로 다른 형태로 동작.
※ 객체지향의 목적 - 재사용성을 높이자
※ 기본 라이브러리 사용설명서 = java api
java.base > java.lang > System > Field Summary의 out 오른쪽에 PrintStream >
Method Summary의 println() 메서드 10개 > 대표 오버로드 메서드
System.out의 println(); 메서드, 10개 다 매개변수 다르나 이름은 동일함.
System (Java SE 11 & JDK 11 ) (oracle.com)
※ 생성자에서도 오버로드 가능하다.
public class OverloadTest {
public static void plus(int a, int b) {
System.out.println("합은 " + (a+b));
}
public static void plus(int a, int b, int c) {
System.out.println("합은 " + (a+b+c));
}
public static void plus(double a, double b) {
System.out.println("합은 " + (a+b));
}
// 사용자입장에서 비슷한 기능의 이름 기억하기 쉽게 하려고 이름 동일하게 사용
// 사용자 입장에서 편리하게
// 매개변수의 갯수를 다르게 해서
// 자료형, 순서 다르게도 가능, 중복되지 X
public static void main(String[] args) {
plus(1,2); // 3
plus(1,2,3);
plus(1, 2.0); // 3.0
// 1은 int 타입, 2.0은 더블타입으로 이해할 메소드 필요
// 인자의 자료형과 매개변수의 자료형이 일치함, 1은 1.0으로 자동형변환된다.
}
}
'언어 > Java' 카테고리의 다른 글
패키지 (0) | 2023.07.31 |
---|---|
Product 예제 1 (0) | 2023.07.31 |
접근제어자(Access Modifier) (0) | 2023.07.31 |
생성자 (0) | 2023.07.31 |
this (0) | 2023.07.28 |