ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ μš©ν•΄ μ½”λ“œ κ΅¬ν˜„ν•˜κΈ° (1)이둠
    Java 2022. 8. 21. 22:13

    πŸ”— https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

    μœ„ 링크λ₯Ό μ°Έκ³ ν•˜μ˜€μœΌλ©°, 이해가 μ•ˆλ˜λŠ” 뢀뢄은 μŠ€ν‚΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ˜ˆμ‹œ μ½”λ“œλ₯Ό 찾아보고 μΆ”κ°€ μž‘μ„±ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.



    0. λͺ©ν‘œ

    상속과 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ μš©ν•΄ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ €κ³  ν•œλ‹€.
    μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 좔상 ν΄λž˜μŠ€κ°€ 있고, μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œ 이 좔상 클래슀λ₯Ό μƒμ†ν•˜μ—¬ μ‚¬μš©ν•  것이닀. μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜κΈ°μ— μ•žμ„œ μ–΄λ–€ κΈ°λŠ₯을 좔상 클래슀둜 λ§Œλ“€κ³  μΈν„°νŽ˜μ΄μŠ€λ‘œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”μ§€ 두 κ°œλ…λΆ€ν„° μ•Œμ•„λ³΄μž.



    1. μΆ”μƒλ©”μ„œλ“œμ™€ μΆ”μƒν΄λž˜μŠ€ ?

    μΆ”μƒν΄λž˜μŠ€λŠ” abstract κ°€ μ„ μ–Έλœ ν΄λž˜μŠ€μ΄λ‹€. μΆ”μƒν΄λž˜μŠ€μ—λŠ” μΆ”μƒλ©”μ„œλ“œκ°€ 포함될 μˆ˜λ„ 있고 ν¬ν•¨λ˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€.

    μΆ”μƒν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€ν™”(new Class) ν•  수 μ—†μ§€λ§Œ, ν•˜μœ„ν΄λž˜μŠ€ν™” ν•  μˆ˜λŠ” μžˆλ‹€.
    μΆ”μƒλ©”μ„œλ“œλŠ” μ•„λž˜μ™€ 같이 κ΅¬ν˜„ 없이 μ„ μ–Έλœ λ©”μ„œλ“œμ΄λ‹€. (μ€‘κ΄„ν˜Έ({})κ°€ μ—†κ³ , μ„Έλ―Έμ½œλ‘ μœΌλ‘œ λλ‚œλ‹€.)

    abstract void moveTo(double deltaX, double deltaY);

    ν΄λž˜μŠ€μ— μΆ”μƒλ©”μ„œλ“œκ°€ ν¬ν•¨λœ 경우, κ·Έ ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ abstract μ˜ˆμ•½μ–΄λ₯Ό μ„ μ–Έν•΄μ•Όν•œλ‹€.

    public abstract class GraphicObject {
       // declare fields
       // declare nonabstract methods
       abstract void draw();
    }

    좔상 ν΄λž˜μŠ€κ°€ ν•˜μœ„ ν΄λž˜μŠ€ν™” 될 λ•Œ, κ·Έ ν•˜μœ„ ν΄λž˜μŠ€λŠ” 보톡 λΆ€λͺ¨ ν΄λž˜μŠ€μ— μžˆλŠ” λͺ¨λ“  좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€. (λͺΈν†΅μ„ μ±„μ›Œμ•Ό ν•œλ‹€!) λ§Œμ•½, ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œλ„ 좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ abstract λ₯Ό μ„ μ–Έν•΄μ•Ό ν•œλ‹€.



    2. μΈν„°νŽ˜μ΄μŠ€μ™€ 비ꡐ해 λ³Έ μΆ”μƒν΄λž˜μŠ€

    μΆ”μƒν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€μ™€ μœ μ‚¬ν•˜λ‹€. λ‘˜ λ‹€ μΈμŠ€ν„΄μŠ€ν™” ν•  수 μ—†κ³ , μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ λͺ¨λ‘ κ΅¬ν˜„μ΄ 된 λ©”μ„œλ“œμ™€ κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λ©”μ„œλ“œκ°€ ν˜Όν•©λ˜μ–΄ μžˆμ„ 수 μžˆλ‹€. (μžλ°” 8 이후뢀터 μΈν„°νŽ˜μ΄μŠ€μ—μ„œλ„ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 μžˆλ‹€.)

    ν•˜μ§€λ§Œ μΆ”μƒν΄λž˜μŠ€λŠ” static, final이 μ•„λ‹Œ ν•„λ“œλ₯Ό μ„ μ–Έν•  수 있고, public, protected, private μ ‘κ·Ό μ§€μ •μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

    μΈν„°νŽ˜μ΄μŠ€λŠ” λͺ¨λ“  ν•„λ“œκ°€ μžλ™μœΌλ‘œ public, static, final 이고, μ„ μ–Έν•˜κ±°λ‚˜ μ •μ˜ν•˜λŠ” λͺ¨λ“  λ©”μ„œλ“œ(default method)λŠ” public 이닀.
    κ²Œλ‹€κ°€ μΆ”μƒν΄λž˜μŠ€λ“  μ•„λ‹ˆλ“  λ”± ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λ§Œμ„ 상속할 수 μžˆμ§€λ§Œ μΈν„°νŽ˜μ΄μŠ€λŠ” μ—¬λŸ¬ 개λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.



    3. μΈν„°νŽ˜μ΄μŠ€μ™€ μΆ”μƒν΄λž˜μŠ€ 쀑 μ–΄λ–€ 것을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”κ°€?

    μ•„λž˜μ˜ 사항에 ν•΄λ‹Ήλœλ‹€λ©΄ 좔상 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 κ³ λ €ν•΄λ³΄μž.

    Β· λ°€μ ‘ν•˜κ²Œ μ—°κ΄€λœ μ—¬λŸ¬κ°œμ˜ ν΄λž˜μŠ€μ—μ„œ μ½”λ“œλ₯Ό κ³΅μœ ν•˜κΈ°λ₯Ό μ›ν•˜λŠ” 경우

    μ•„λž˜μ˜ 사항에 ν•΄λ‹Ήλœλ‹€λ©΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 κ³ λ €ν•΄λ³΄μž.

    Β· κ΄€λ ¨ μ—†λŠ” ν΄λž˜μŠ€μ—μ„œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” 경우. 
    예λ₯Ό λ“€λ©΄ Comparable, Cloneable μΈν„°νŽ˜μ΄μŠ€λŠ” μ„œλ‘œ 관련이 μ—†λŠ” μˆ˜λ§Žμ€ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„λ˜κ³  μžˆλ‹€.

    λŒ“κΈ€