inblog logo
|
DailyCoding
    JAVA

    16. 오버로딩(Overloading)

    박은서's avatar
    박은서
    Dec 17, 2025
    16. 오버로딩(Overloading)
    Contents
    1. 오버로딩(Overloading)1️⃣ 오버로딩(Overloading)이란?2️⃣ 오버로딩의 조건3️⃣ 오버로딩의 장점4️⃣ 오버로딩의 한계5️⃣ 교재 예제6️⃣ 실습

    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
    Contents
    1. 오버로딩(Overloading)1️⃣ 오버로딩(Overloading)이란?2️⃣ 오버로딩의 조건3️⃣ 오버로딩의 장점4️⃣ 오버로딩의 한계5️⃣ 교재 예제6️⃣ 실습

    DailyCoding

    RSS·Powered by Inblog