μƒˆμ†Œμ‹

LANGUAGES/Java

[Java] Java λ‹€ν˜•μ„±κ³Ό μ˜€λ²„λ‘œλ”©, μ˜€λ²„λΌμ΄λ”©

  • -

πŸƒ Java λ‹€ν˜•μ„±

βœ”οΈ λ‹€ν˜•μ„± μ΄λž€ ν•˜λ‚˜μ˜ ν•¨μˆ˜, ν΄λž˜μŠ€κ°€ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ λ™μž‘ν•˜λŠ” 것을 λ§ν•œλ‹€. Javaμ—μ„œλŠ” 주둜 μ˜€λ²„λ‘œλ”©(Overloading)κ³Ό μ˜€λ²„λΌμ΄λ”©(Overriding) 을 ν†΅ν•΄μ„œ λ‹€ν˜•μ„±μ„ μ§€μ›ν•œλ‹€.

 

🌱 μ˜€λ²„λ‘œλ”©(Overloading) : ν™•μž₯

βœ”οΈ ν•¨μˆ˜κ°€ μ—¬λŸ¬ 개의 λ™μΌν•œ 이름을 가지며 λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜•κ³Ό 개수 κ°€ λ‹€λ₯΄κ²Œ μ„€μ •λ˜μ–΄ μ‚¬μš©ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

βœ”οΈ μ˜€λ²„λ‘œλ”©μ€ ν•¨μˆ˜ μ˜€λ²„λ‘œλ”© κ³Ό μƒμ„±μž μ˜€λ²„λ‘œλ”© 이 있으며 μ‹€μ œ μ μš©λ˜λŠ” 것은 κ°™λ‹€. 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜κ³ , λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜•κ³Ό 개수λ₯Ό λ‹€λ₯΄κ²Œ ν•˜μ—¬ λ‹€μ–‘ν•œ μœ ν˜•μ˜ ν˜ΈμΆœμ— 응닡할 수 있게 ν•˜λŠ” 방식이닀.(일반적으둜 ν•˜λ‚˜μ˜ 클래슀 μ•ˆμ— λ™μΌν•œ μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜κ²Œ 되면 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.)

➀ μ˜€λ²„λ‘œλ”© 예제

public class Overloading {

    public void overloading() {
        System.out.println("λ§€κ°œλ³€μˆ˜ μ—†λŠ” ν•¨μˆ˜");
    }

    public void overloading(int a, int b) {
        System.out.println("intν˜• 인자 2개λ₯Ό μš”μ²­ν•˜λŠ” ν•¨μˆ˜: " + a + ", " + b);
    }

    public void overloading(String str) {
        System.out.println("Stringν˜• 인자 1개λ₯Ό μš”μ²­ν•˜λŠ” ν•¨μˆ˜: " + str);
    }
}

public class App {
    public static void main(String[] args) throws Exception {
        Overloading old = new Overloading();
        old.overloading();
        old.overloading(2, 3);
        old.overloading("λ¬Έμžν˜• μ˜€λ²„λ‘œλ”© ν•¨μˆ˜");
    }
}

➀ μ˜€λ²„λ‘œλ”© νŠΉμ§•
βœ”οΈ μ˜€λ²„λ‘œλ”©μ˜ νŠΉμ§•μ€ μ ‘κ·Ό μ œμ–΄μžλ₯Ό 자유둭게 지정할 수 μžˆλ‹€.

  • μ˜€λ²„λ‘œλ”©λœ 각 ν•¨μˆ˜μ˜ μ ‘κ·Ό μ œμ–΄μžλ₯Ό public, default, protected, private으둜 λ‹€λ₯΄κ²Œ 지정해 μ€˜λ„ λ¬΄κ΄€ν•œλ‹€. ν•˜μ§€λ§Œ 같은 λ§€κ°œλ³€μˆ˜ κ°œμˆ˜μ™€ νƒ€μž…μ„ κ°€μ§€λ©΄μ„œ μ ‘κ·Ό μ œμ–΄μžλ§Œ λ‹€λ₯΄κ²Œ ν•œλ‹€κ³  μ˜€λ²„λ‘œλ”©μ΄ λ˜μ§€λŠ” μ•ŠλŠ”λ‹€.
  • λ§€κ°œλ³€μˆ˜λŠ” λ™μΌν•˜κ³  λ°˜ν™˜ νƒ€μž…μ΄ λ‹€λ₯Έ κ²½μš°λŠ” μ˜€λ²„λ‘œλ”©μ΄ μ„±λ¦½λ˜μ§€ μ•ŠλŠ”λ‹€.

 

➀ μ˜€λ²„λ‘œλ”©μ„ μ‚¬μš©ν•˜λŠ” 이유

  • 같은 κΈ°λŠ₯을 ν•˜λŠ” ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • ν•¨μˆ˜μ˜ 이름을 μ ˆμ•½ν•  수 μžˆλ‹€.

βœ”οΈ 많이 μ‚¬μš©ν•˜λŠ” println() ν•¨μˆ˜λŠ” μ˜€λ²„λ‘œλ”© λ˜μ–΄ 있기 λ•Œλ¬Έμ— intν˜•, Stringν˜•, booleanν˜•, charν˜• 인자 λͺ¨λ‘ λ°›μ•„μ„œ λ™μž‘ν•  수 μžˆλ‹€.


βœ”οΈ λ§Œμ•½ μ˜€λ²„λ‘œλ”©μ„ μ΄μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ printlnInt(), printlnString() λ“± 각각 ν•¨μˆ˜μ˜ 이름을 λ”°λ‘œ λ§Œλ“€μ–΄μ€˜μ•Ό ν•œλ‹€.

 

🌱 μ˜€λ²„λΌμ΄λ”©(Overriding) : μž¬μ •μ˜

βœ”οΈ μƒμœ„ ν΄λž˜μŠ€κ°€ 가지고 μžˆλŠ” λ©”μ„œλ“œλ₯Ό ν•˜μœ„ ν΄λž˜μŠ€κ°€ μž¬μ •μ˜ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

βœ”οΈ μƒμœ„ ν΄λž˜μŠ€κ°€ 가지고 μžˆλŠ” 멀버 λ³€μˆ˜κ°€ ν•˜μœ„ 클래슀둜 μƒμ†λ˜λŠ” κ²ƒμ²˜λŸΌ μƒμœ„ ν΄λž˜μŠ€κ°€ 가지고 μžˆλŠ” ν•¨μˆ˜λ„ ν•˜μœ„ 클래슀둜 μƒμ†λ˜μ–΄ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

  • 상속받은 ν•¨μˆ˜λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 있고, ν•„μš”μ— 따라 μž¬μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•  수 있음
class Parent {
    public void overriding() {
        System.err.println("λΆ€λͺ¨ λ©”μ„œλ“œ λ‚΄μš©");
    }
}

class Child extends Parent{
    @Override
    public void overriding() {
        super.overriding();
        System.err.println("λΆ€λͺ¨ 클래슀의 ν•¨μˆ˜λ₯Ό 상속받은 ν•¨μˆ˜");
    }
}

public class App {
    public static void main(String[] args) throws Exception {
        Parent parent = new Parent();
        parent.overriding();

        Child child = new Child();
        child.overriding();
    }
}

➀ μ˜€λ²„λΌμ΄λ”© νŠΉμ§•

  • μƒμœ„ 클래슀의 ν•¨μˆ˜λ³΄λ‹€ μ ‘κ·Ό μ œμ–΄μžλ₯Ό 더 쒁은 λ²”μœ„λ‘œ λ³€κ²½ν•  수 μ—†λ‹€.
  • μƒμœ„ 클래슀의 ν•¨μˆ˜λ³΄λ‹€ 더 큰 λ²”μœ„μ˜ μ˜ˆμ™Έλ₯Ό μ„ μ–Έ ν•  수 μ—†λ‹€.
  • μƒμœ„ 클래슀의 static ν•¨μˆ˜λŠ” ν΄λž˜μŠ€μ— μ†ν•˜λŠ” ν•¨μˆ˜μ΄κΈ° λ•Œλ¬Έμ— μƒμ†λ˜μ§€ μ•Šκ³  μ˜€λ²„λΌμ΄λ“œ λ˜μ§€λ„ μ•ŠλŠ”λ‹€.(static ν•¨μˆ˜λŠ” λ‹€ν˜•μ„±μ΄ μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€.)
  • final이 μ§€μ •λœ ν•¨μˆ˜ μ—­μ‹œ μ˜€λ²„λΌμ΄λ“œλ₯Ό ν•  수 μ—†μœΌλ©°, private μ ‘κ·Ό μ œμ–΄μžλ₯Ό 가진 ν•¨μˆ˜λŠ” 상속 μžμ²΄κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€.

➀ @Overrde μ–΄λ…Έν…Œμ΄μ…˜β—οΈ
βœ”οΈ @Override μ–΄λ…Έν…Œμ΄μ…˜μ΄ μ μš©λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œλŠ” 전에 μ˜€λ²„λΌμ΄λ“œ ν•œ λ©”μ„œλ“œκ°€ μ—…λ°μ΄νŠΈ 이후 κ·Έλƒ₯ 좔가적인 λ©”μ„œλ“œλ‘œ μΈμ‹λ˜μ–΄ 컴파일 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄λ•Œ @Override μ–΄λ…Έν…Œμ΄μ…˜μ„ μ μš©ν•¨μœΌλ‘œμ¨ μ˜λ„μ μœΌλ‘œ 컴파일 였λ₯˜λ₯Ό 일으켜 μž‘λ™λ°©μ‹μ΄ λ°”λ€ŒλŠ” 것을 λŒ€λΉ„ν•  수 μžˆλ‹€.

 

βœ”οΈ λ˜ν•œ @Overrideλ₯Ό ν‘œμ‹œν•¨μœΌλ‘œμ¨ μ½”λ“œ 리딩 μ‹œμ— ν•΄λ‹Ή λ©”μ„œλ“œκ°€ μ˜€λ²„λΌμ΄λ”©ν•˜μ˜€λ‹€λŠ” 것을 μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.