λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
β˜•Java

[Java μ΄ν•΄ν•˜κΈ°] 18. Java의 μ˜€λ²„λ‘œλ”©

by Luvbit 2024. 5. 27.


 

πŸ’œ Java의 μ˜€λ²„λ‘œλ”©μ΄λž€?

μ˜€λ²„λ‘œλ”©(Overloading) 은 λ™μΌν•œ 이름을 가진 λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄λ‚˜ 개수λ₯Ό λ‹€λ₯΄κ²Œ ν•˜μ—¬
μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. μ΄λŠ” 컴파일 μ‹œμ μ— μ–΄λ–€ λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ μ§€λ₯Ό κ²°μ •ν•˜κ²Œ ν•©λ‹ˆλ‹€.

 

 

 

πŸ€μ˜€λ²„λ‘œλ”©μ˜ νŠΉμ§• 

 

1. 같은 이름, λ‹€λ₯Έ 맀개 λ³€μˆ˜

- μ˜€λ²„λ‘œλ”©μ€ λ™μΌν•œ μ΄λ¦„을 κ°€μ§„ λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜λ‚˜ νƒ€μž…을 λ‹€λ₯΄κ²Œ ν•˜μ—¬ μ—¬λŸ¬ κ°œ μ •μ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

2. 컴파일 νƒ€μž…μ— κ²°μ •

- μ˜€λ²„λ‘œλ”©μ€ μ»΄νŒŒμΌ νƒ€μž„에 κ²°μ •λ©λ‹ˆλ‹€. 

- 즉, μ–΄λ–€ λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ μ§€λŠ” 컴파일 μ‹œμ μ— λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό κ°œμˆ˜μ— 따라 κ²°μ •λ©λ‹ˆλ‹€.

 

3. λ°˜ν™˜ νƒ€μž…μ€ 영ν–₯ μ—†μŒ

- μ˜€λ²„λ‘œλ”©μ—μ„œλŠ” λ°˜ν™˜ νƒ€μž…은 κ³ λ €λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 

- λ°˜ν™˜ νƒ€μž…μ΄ λ‹€λ₯΄λ”라도 λ§€κ°œλ³€μˆ˜ λͺ©λ‘μ΄ κ°™μœΌλ©΄ μ˜€λ²„λ‘œλ”©μ΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

 

 

 

🩷 μž₯점

μ½”λ“œμ˜ 가독성 λ©”μ„œλ“œ μ΄λ¦„을 μΌκ΄€λ˜κ²Œ μœ μ§€ν•  μˆ˜ μžˆμœΌλ―€λ‘œ μ½”λ“œμ˜ κ°€λ…성이 λ†’μ•„μ§‘λ‹ˆλ‹€.
μœ μ§€λ³΄μˆ˜ 용이 같은 κΈ°λŠ₯을 ν•˜λŠ” λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ μ΄λ¦„μœΌλ‘œ κ΄€λ¦¬ν•  μˆ˜ μžˆμ–΄ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•©λ‹ˆλ‹€.
λ‹€μ–‘ν•œ μž…λ ₯ 처리 λ‹€μ–‘ν•œ μž…λ ₯을 μ²˜λ¦¬ν•  μˆ˜ μžˆμ–΄ μœ μ—°μ„±μ΄ λ†’μ•„μ§‘λ‹ˆλ‹€.

 

 

 

 


μ˜€λ²„λ‘œλ”©μ— λŒ€ν•œ κ°œλ…μ„ μ˜ˆμ œμ™€ ν•¨κ»˜ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

예제 1 ) 같은 이름, λ‹€λ₯Έ 맀개 λ³€μˆ˜

public class MathOperations {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public int add(int a, int b, int c) {
        return a + b + c;
    }

    public static void main(String[] args) {
        MathOperations math = new MathOperations();
        System.out.println(math.add(1, 2)); // intν˜• add 호좜
        System.out.println(math.add(1.5, 2.5)); // doubleν˜• add 호좜
        System.out.println(math.add(1, 2, 3)); // 3개의 intν˜• add 호좜
    }
}

 

 

 

예제 2 ) λ°˜ν™˜ νƒ€μž…μ€ 영ν–₯ μ—†μŒ

public class Test {
    // μœ νš¨ν•œ μ˜€λ²„λ‘œλ”©
    public void display(String msg) {
        System.out.println(msg);
    }

    // μœ νš¨ν•œ μ˜€λ²„λ‘œλ”©
    public void display(int num) {
        System.out.println(num);
    }

    // λ°˜ν™˜ νƒ€μž…λ§Œ λ‹€λ₯΄λ―€λ‘œ μ˜€λ²„λ‘œλ”© λΆˆκ°€ (컴파일 μ—λŸ¬)
    // public int display(int num) {
    //     return num;
    // }
}

 

 

 

예제 3 ) λ‹€μ–‘ν•œ μž…λ ₯ 처리

public class Print {
    public void printInfo(String info) {
        System.out.println("String: " + info);
    }

    public void printInfo(int info) {
        System.out.println("Integer: " + info);
    }

    public void printInfo(double info) {
        System.out.println("Double: " + info);
    }

    public static void main(String[] args) {
        Print printer = new Print();
        printer.printInfo("Hello World");
        printer.printInfo(123);
        printer.printInfo(45.67);
    }
}

 

 


 

 

 

" μš”μ•½ " 

  • μ˜€λ²„λ‘œλ”© : λ™μΌν•œ 이름을 가진 λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄λ‚˜ 개수λ₯Ό λ‹¬λ¦¬ν•˜μ—¬ μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것.
  • νŠΉμ§• : 같은 이름, λ‹€λ₯Έ λ§€κ°œλ³€μˆ˜. 컴파일 νƒ€μž„μ— κ²°μ •. λ°˜ν™˜ νƒ€μž…μ€ 영ν–₯ μ—†μŒ.
  • μž₯점 : μ½”λ“œμ˜ κ°€λ…μ„±, μœ μ§€λ³΄μˆ˜ μš©μ΄, λ‹€μ–‘ν•œ μž…λ ₯ μ²˜λ¦¬ κ°€λŠ₯.

 

 

 

이 μ˜€λ²„λ‘œλ”©μ€ μš°λ¦¬κ°€ μžμ£Ό μ‚¬μš©ν•˜λŠ” System.out.println() λ©”μ„œλ“œμ—λ„ μ μš©λ©λ‹ˆλ‹€.

μžλ°”λŠ” μˆ˜λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬λ₯Ό κ°€μ§€κ³  μžˆκΈ° λ•Œλ¬Έμ—, ν•„μš”ν•  λ•Œλ§ˆλ‹€ API λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜λ©΄μ„œ ν•™μŠ΅ν•˜λ©΄ λ§Žμ€ λ„움이 λ©λ‹ˆλ‹€.

μ•„λž˜λŠ” μžλ°”μ˜ API μ‚¬μ΄νŠΈ μ£Όμ†Œμž…λ‹ˆλ‹€.

 

https://docs.oracle.com/en/java/javase/17/docs/api/index.html

 

Overview (Java SE 17 & JDK 17)

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

 

μ‹€μ œλ‘œ System.out.println() λ©”μ„œλ“œλŠ” λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ μ—¬λŸ¬ λ²„μ „μœΌλ‘œ μ˜€λ²„λ‘œλ”©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, λ¬Έμžμ—΄, μ •μˆ˜, 뢀동 μ†Œμˆ˜μ  숫자, λΆˆλ¦¬μ–Έ, 심지어 κ°μ²΄κΉŒμ§€ 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬κ°€ System.out.println()을 ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ μ»΄νŒŒμΌλŸ¬λŠ” 인자의 νƒ€μž…μ— λ§žλŠ” μ μ ˆν•œ μ˜€λ²„λ‘œλ”©λœ λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μ„ νƒν•©λ‹ˆλ‹€.

 

ν”„λ‘œκ·Έλž˜λ° μ‹œ 이 APIμ‚¬μ΄νŠΈλ₯Ό μ°Έκ³ ν•˜λ©° ν•˜μ‹œλŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€. 😍

 

 

 

 

 

μ˜€λ²„λ‘œλ”©μ„ 잘 ν™œμš©ν•˜λ©΄, 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ μ€‘μš”ν•œ 원칙인
λ‹€ν˜•μ„±μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ§ˆλ¬Έμ€ μ–Έμ œλ“ μ§€ λŒ“κΈ€μ— λ‚¨κ²¨μ£Όμ„Έμš”.
🩡🐰🩡