16. 오버로딩(Overloading)

박은서's avatar
Dec 17, 2025
16. 오버로딩(Overloading)

1. 오버로딩(Overloading)

교재 p.154-155 / 4.3 생성자와 메소드 오버로딩

1️⃣ 오버로딩(Overloading)이란?

같은 메서드 이름을 사용하지만, 매개변수의 개수나 타입이 다른 여러 메서드를 정의하는 것
(함수 이름이 같아도 매개변수 타입 내용이나 위치, 개수 다르거나 하면 다른 함수로 인식)

2️⃣ 오버로딩의 조건

메서드 이름은 같아야 하고, 다음 중 하나라도 달라야 한다
  • 매개변수 개수
void print(int a) void print(int a, int b)
  • 매개변수 타입
void print(int a) void print(double a)
  • 매개변수 순서
void print(int a, String b) void print(String b, int a)
⚠ 반환 타입만 다르다고 해서 오버로딩이 되지는 않는다.
int sum(int a, int b) double sum(int a, int b) // ❌

3️⃣ 오버로딩의 장점

  • 함수 하나만 기억하면 됨 → 이 기술이 없으면 함수 이름을 다 다르게 하고, 그 이름을 기억해야 함
ex) sout → 인수, 스트링, 더블을 출력하느냐에 따라 함수가 다른데 오버로딩을 지원하기 때문에 sout 하나로 모든 것 출력 가능

4️⃣ 오버로딩의 한계

  • 객체가 많을수록 오버로딩을 수도 없이 만들어야 함 → 객체가 2개면 오버로딩 4개, 객체가 3개면 오버로딩 9개(경우의 수-제곱)
→ 그래서 배워야 하는 게 추상화!(재판관, 가구) → 객체 지향 프로그래밍

5️⃣ 교재 예제

1) MyMath(p.154)

package ex04; public class MyMath { int add(int x, int y){return x+y;} int add(int x, int y, int z){return x+y+z;} int add(int x, int y, int z, int w){return x+y+z+w;} public static void main(String[] args) { MyMath obj; obj = new MyMath(); System.out.print(obj.add(10,20)+" "); System.out.print(obj.add(10,20,30)+" "); System.out.print(obj.add(10,20,30,40)+" "); } }
notion image

6️⃣ 실습

package ex04.game; public class Zealot { int hp = 100; int attack = 10; }
package ex04.game; public class Dragoon { int hp = 100; int attack = 5; }
package ex04.game; public class GameApp { // 책임 : u1 -> u2 공격 static void start(Zealot u1, Dragoon u2){ u2.hp = u2.hp - u1.attack; } static void start(Dragoon u1, Zealot u2){ // 함수 이름 같아도 매개변수 다르면 다른 함수로 인식 -> 오버로딩 u2.hp = u2.hp - u1.attack; } static void start(Zealot u1, Zealot u2){ u2.hp = u2.hp - u1.attack; } public static void main(String[] args) { Zealot z1 = new Zealot(); Zealot z2 = new Zealot(); Dragoon d1 = new Dragoon(); start(z1,d1); // 1. 드라군의 상태확인 System.out.println(d1.hp); start(d1,z1); // 2. 질럿의 상태확인 System.out.println(z1.hp); start(z1,z2); System.out.println(z2.hp); System.out.println(); // 오버로딩의 장점 System.out.println(1); System.out.println(""); System.out.println(1.2); System.out.println(true); } }
notion image
Share article