πŸ—„οΈ Backend/Spring Boot

Spring Boot λ“€μ–΄κ°€κΈ° μ „ Javaμ—μ„œ ν•΅μ‹¬μ μœΌλ‘œ μ•Œμ•„μ•Ό ν•  κ°œλ… 정리

kongmi 2023. 6. 5. 19:40

객체지ν–₯ 볡슡

πŸ’‘
면접에 자주 λ“±μž₯ν•˜λŠ” λ‹€ν˜•μ„±, 좔상 클래슀, μΈν„°νŽ˜μ΄μŠ€

객체지ν–₯ 4λŒ€ νŠΉμ„±

μΊ‘μŠν™”, 상속, 좔상화, λ‹€ν˜•μ„±

상속을 μ™œ ν•˜λŠ”κ°€?

  • μž¬μ‚¬μš©μ„±(κ·ΈλŒ€λ‘œ λ¬Όλ €λ°›λ˜ 변경이 ν•„μš”ν•œ 경우)
    • 이 λ•Œ μΌμ–΄λ‚˜λŠ”κ²Œ λ‹€ν˜•μ„±

πŸ“Œ λΆ€λͺ¨, μžμ‹ 클래슀 λͺ¨λ‘ κ΅¬ν˜„λΆ€κ°€ 있음.

μΊ‘μŠν™”

  • λ‚΄λΆ€ μΈμŠ€ν„΄μŠ€λ₯Ό μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•˜λŠ” κ²ƒμœΌλ‘œλΆ€ν„° λ³΄ν˜Έν•˜κΈ° μœ„ν•¨.
    • 예) μš΄μ „μžλŠ” μ°¨ 속도λ₯Ό 높일 λ•Œ 엔진에 직접 μ ‘κ·Όν•˜μ—¬ 속도λ₯Ό μ œμ–΄ν•˜λ©΄ μ•ˆ 됨.
      • 졜고 속도가 200km/h인데 250km/h둜 μ‘°μ ˆν•˜λ©΄ 큰일남..

✴️ λ‹€ν˜•μ„±

μƒμœ„ 클래슀 νƒ€μž…μ˜ μ°Έμ‘° λ³€μˆ˜λ‘œ ν•˜μœ„ 클래슀의 객체λ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€. ν•˜μœ„ 클래슀 is kind of μƒμœ„ 클래슀
πŸ’‘
μŠ€ν”„λ§ λΆ€νŠΈμ˜ μ˜μ‘΄μ„± μ£Όμž…(AOP)κ³Ό λΉ„μŠ·(객체λ₯Ό λˆ„κ°€ λ§Œλ“€μ—ˆλƒμ— 따라 닀름.. ex.μ œμ–΄ μ—­μ „(IoC))
  • ✨ μ˜€λ²„λ‘œλ”©, μ˜€λ²„λΌμ΄λ”© 차이점?
    • μ˜€λ²„λ‘œλ”© : System.out.print() μƒκ°ν•˜λ©΄ 됨.
    • μ˜€λ²„λΌμ΄λ”© : λΆ€λͺ¨(μƒμœ„) ν΄λž˜μŠ€μ—μ„œ λ§Œλ“  λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜
      • μ ‘κ·Όμ œν•œμž, λ°˜ν™˜νƒ€μž…, λ§€κ°œλ³€μˆ˜ λͺ¨λ‘ κ°™μ•„μ•Ό 함.

✴️ μΆ”상 클래슀

μ‚¬μš© λͺ©μ 

  • μƒλŒ€λ°©μ΄ μ–΄λ–»κ²Œ κ΅¬ν˜„λ˜μ–΄μžˆλŠ”μ§€ λͺ°λΌλ„ 되기 μœ„ν•΄(λŠμŠ¨ν•œ κ²°ν•© 관계)
  • 그러기 μœ„ν•΄ κ³΅ν†΅λ˜λŠ” νŠΉμ„±μ„ μΆ”μΆœ(좔상.abstract)ν•˜λŠ” 것이닀.

νŠΉμ§•

  1. 상속을 μ£ΌλŠ” λΆ€λͺ¨λŠ” 객체λ₯Ό λ§Œλ“€ 수 μ—†μŒ
  1. λΆ€λͺ¨ ν΄λž˜μŠ€λŠ” 좔상 λ©”μ†Œλ“œλ₯Ό 포함해야 함. (근데 일반 λ©”μ†Œλ“œλ„ 넣을 수 있음)
    • κ΅¬ν˜„λΆ€κ°€ μ—†κΈ° λ•Œλ¬Έμ— 상속 λ°›λŠ” ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ κ΅¬ν˜„ν•΄μ€˜μ•Ό ν•˜λŠ” κ°•μ œμ„±μ΄ 생김.
    • 이 λ•Œ, λŠμŠ¨ν•œ κ²°ν•© 관계가 μƒκΉ€πŸ“
  1. 단일 μƒμ†λ§Œ 지원함.

좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€

곡톡점: 객체 생성 λΆˆκ°€, μ°Έμ‘° νƒ€μž…

차이점: 좔상 ν΄λž˜μŠ€λŠ” 단일 상속, μΈν„°νŽ˜μ΄μŠ€λŠ” 닀쀑 상속

 

✴️ μΈν„°νŽ˜μ΄μŠ€

μžλ°”μ—μ„œλŠ” 클래슀λ₯Ό μ΄μš©ν•œ 닀쀑 상속을 μ§€μ›ν•˜μ§€ μ•Šμ§€λ§Œ 닀쀑 μƒμ†μ˜ 이점을 버릴 수 μ—†μ–΄μ„œ ‘μΈν„°νŽ˜μ΄μŠ€’λ₯Ό 톡해 닀쀑 상속을 μ§€μ›ν•©λ‹ˆλ‹€.

νŠΉμ§•

μΈν„°νŽ˜μ΄μŠ€λŠ” μ„€κ³„λ„λ©΄μœΌλ‘œλ§Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ μ™„μ „ 좔상화 κ°œλ…μ΄ 적용 됨.
  1. λͺ¨λ“  ν•„λ“œλŠ” μžλ™μœΌλ‘œ μƒμˆ˜λ‘œ λ³€ν™˜(final static)
    1. μ™œ? μΈν„°νŽ˜μ΄μŠ€λŠ” 상속이 되면 μ•ˆλ˜κΈ° λ•Œλ¬Έμ—
    1. μ™œ? μ™ΈλΆ€μ—μ„œ 직접 μ ‘κ·Ό λͺ»ν•˜κ²Œ ν•˜λ €κ³ . (?) μ•„ ..λ¨Έλ¦¬λ‘œλŠ” μ•Œκ² λŠ”λ° κΈ€λ‘œ μ“°λ €λ‹ˆ ν—·κ°ˆλ¦¬λ„€
  1. λͺ¨λ“  λ©”μ†Œλ“œλŠ” 좔상 λ©”μ†Œλ“œλ‘œ λ³€κ²½(κ΅¬ν˜„λΆ€ μž‘μ„±X)
  1. ‘λ””ν΄νŠΈ λ©”μ†Œλ“œ’λŠ” κ΅¬ν˜„λΆ€λ₯Ό κ°€μ§€κ³  있으며, 상속 받은 ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯
  2. 정적 λ©”μ†Œλ“œ