Study/Java

[TIL] λ‹€ν˜•μ„±

hong- 2022. 5. 15. 20:13

πŸ”Ž OOP의 4λŒ€ νŠΉμ§•

πŸ™πŸ» λ‹€ν˜•μ„± Polymorphism

  - ν•˜λ‚˜μ˜ νƒ€μž… λ³€μˆ˜λ‘œ μ—¬λŸ¬ 객체λ₯Ό μ°Έμ‘° ν•  수 있음 

  - μƒμœ„ν΄λž˜μŠ€ νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ ν•˜μœ„ν΄λž˜μŠ€ 객체λ₯Ό μ°Έμ‘°

  - ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ κ°€μ§€ ν˜•νƒœλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” 것

  - μ½”λ“œ 쀑볡을 쀄여 νŽΈλ¦¬ν•˜κ³  효과적으둜 ν”„λ‘œκ·Έλž˜λ° κ°€λŠ₯

  - Poly : μ—¬λŸ¬ 개

  - morphism : ν˜•νƒœ / 싀체 

  - μ°Έμ‘°λ³€μˆ˜κ°€ μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„μ˜ κ°œμˆ˜λŠ” μ‹€μ œ 객체의 멀버 κ°œμˆ˜λ³΄λ‹€ κ°™κ±°λ‚˜ 적어야 함

  - μƒμœ„ 클래슀의 μ°Έμ‘° λ³€μˆ˜λ‘œ ν•˜μœ„ 클래슀의 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” 것 ( Friendκ°€ GirFriendλ₯Ό μ°Έμ‘°ν•˜λŠ” κ°œλ… )

  - λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© 및 μ˜€λ²„λ‘œλ”©λ„ λ‹€ν˜•μ„±μ˜ 예


πŸ“ μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž… λ³€ν™˜

 - κΈ°λ³Έ μžλ£Œν˜•μ˜ ν˜•λ³€ν™˜ 처럼 μ°Έμ‘° λ³€μˆ˜λ„ νƒ€μž… λ³€ν™˜ κ°€λŠ₯ ! → μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„μ˜ 개수 쑰절

 - 상속관계가 μžˆλŠ” μ–‘λ°©ν–₯으둜 자유둭게 μˆ˜ν–‰λ¨

 

 πŸ’‘ νƒ€μž… λ³€ν™˜μ„ μœ„ν•œ 쑰건

  (1) μ„œλ‘œ 상속관계에 μžˆλŠ” 'μƒμœ„ 클래슀 - ν•˜μœ„ 클래슀' μ‚¬μ΄μ—λ§Œ νƒ€μž… λ³€ν™˜μ΄ κ°€λŠ₯함

  (2) μ—… μΊμŠ€νŒ… : ν•˜μœ„ 클래슀 νƒ€μž… → μƒμœ„ 클래슀 νƒ€μž… λ³€ν™˜ : κ΄„ν˜Έ(μ—°μ‚°μž) μƒλž΅ κ°€λŠ₯

  (3) λ‹€μš΄ μΊμŠ€νŒ… : μƒμœ„ 클래슀 νƒ€μž… → ν•˜μœ„ 클래슀 νƒ€μž… λ³€ν™˜ : κ΄„ν˜Έ(μ—°μ‚°μž) λ°˜λ“œμ‹œ λͺ…μ‹œ

< μƒμœ„ : λ””μ €νŠΈ >
< ν•˜μœ„ : λΉ΅, 케이크 >

Cake cake = new Cake();
Dessert dessert = (Dessert) cake;   //ν•˜μœ„ 클래슀λ₯Ό μƒμœ„ 클래슀 Dessert νƒ€μž…μœΌλ‘œ λ³€ν™˜
Cake cake2 = (Cake) dessert;  //μƒμœ„ ν΄λž˜μŠ€κ°€ 된 것을 λ‹€μ‹œ ν•˜μœ„ 클래슀인 Cake νƒ€μž…μœΌλ‘œ λ³€ν™˜

πŸ“ instanceof μ—°μ‚°μž

 - μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž… λ³€ν™˜μ΄ κ°€λŠ₯ν•œμ§€ μ—¬λΆ€λ₯Ό boolean νƒ€μž…μœΌλ‘œ 확인 κ°€λŠ₯

  ( μ‰½κ²Œ 보자면, 뒀에 μžˆλŠ” 것이 μ•žμ— μžˆλŠ” 것을 λŒ€μ‹ ν•  수 μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ )

 - μΊμŠ€νŒ…μ΄ κ°€λŠ₯ν•˜λ‹€ = νƒ€μž… λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€

    → 객체가 μ–΄λ–€ μƒμƒμžλ‘œ λ§Œλ“€μ–΄μ‘ŒλŠ”μ§€ & 클래슀 사이 상속관계가 μ‘΄μž¬ν•˜λŠ”μ§€

 - μ΄λŸ¬ν•œ 정보λ₯Ό 확인 ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μ—°μ‚°μž

	μ°Έμ‘°λ³€μˆ˜ instanceof νƒ€μž…
    
ex) dessert instanceof Object;    → true
    dessert instanceof Dessert;   → true
    
    cake instanceof dessert;      → true
    bread instanceof dessert;     → true
    
    cake instanceof bread;         → false

  πŸ‘‰πŸ» κ²°κ³Ό 값이 true 이면 μ°Έμ‘° λ³€μˆ˜κ°€ κ²€μ‚¬ν•œ νƒ€μž…μœΌλ‘œ νƒ€μž… λ³€ν™˜ κ°€λŠ₯

  πŸ‘‰πŸ» κ²°κ³Ό 값이 false λ©΄ μ°Έμ‘° λ³€μˆ˜ νƒ€μž… λ³€ν™˜ λΆˆκ°€λŠ₯


πŸ’‘ Object 클래슀

  - λͺ¨λ“  μžλ°” 클래슀의 μ΅œμƒμœ„ 클래슀둜 ν’€λ„€μž„μ€ ' java.lang.Objcet '

🌱  toString( ) λ©”μ„œλ“œ

    - μ–΄λ–€ 객체의 정보λ₯Ό λ¬Έμžμ—΄ ν˜•νƒœλ‘œ ν‘œν˜„ν•΄μ•Όν•  λ•Œ ν˜ΈμΆœν•˜λŠ” λ©”μ†Œλ“œ

    - 객체의 정보λ₯Ό String ν˜•μœΌλ‘œ ν˜•λ³€ν™˜ ν•΄μ€Œ

    - toString을 μ˜€λ²„λΌμ΄λ”© ν•˜μ§€ μ•ŠμœΌλ©΄ 객체의 ν•΄μ‹œμ½”λ“œκ°€ 좜λ ₯됨