πŸš€
Growth log
  • About me
  • I LEARNED
    • General
      • 개발자 κΏ€νŒ
      • κ·Έλ‘œμŠ€ν•΄ν‚Ή 기초
      • κ°œλ°œμžμ—κ²Œ 도메인 지식은 μ–Όλ§ˆλ‚˜ μ€‘μš”ν• κΉŒ?
      • DTO λ…ΌμŸμ— λŒ€ν•˜μ—¬
      • MSAλž€?
    • Seminar
      • ν…ŒμŠ€νŠΈ 컀버리지 100% - SLASH 21
      • TDDκ°€ μ‹€νŒ¨ν•˜λŠ” 이유 - by μ΄κ·œμ›λ‹˜
      • λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ νŠœλ‹ λ…Έν•˜μš° λ‹€ μ•Œλ € λ“œλ¦Ό|λΌμΈκ°œλ°œμ‹€λ‘
      • 결제 μ‹œμŠ€ν…œμ˜ SDK와 API λ””μžμΈ - SLASH 21
    • Web
      • SOP와 CORS
    • Spring & OOP
      • DTO vs VO
    • Ruby On Rails
      • Rails lib 디렉토리에 λŒ€ν•˜μ—¬
      • Rails의 concernsλž€?
      • Railsμ—μ„œμ˜ GC μž‘λ™μ›λ¦¬
      • Eager loading vs Lazy loading
      • Rails ν™˜κ²½ ꡬ성
      • ActionCable
      • πŸ“”Perfect ruby on rails
        • MVC νŒ¨ν„΄μΈ Rails
        • Ruby on Rails κΈ°λ³Έ - 컨트둀러
        • Ruby on Rails κΈ°λ³Έ - λ·°
        • Ruby on Rails κΈ°λ³Έ - λͺ¨λΈ
        • μŠ€μΊν΄λ”© κΈ°λŠ₯을 μ‚¬μš©ν•œ Rails 개발 기초
        • λ·° 개발
        • λͺ¨λΈ 개발
        • λͺ¨λΈ 개발 - 낙관적 λ™μ‹œ μ‹€ν–‰ μ œμ–΄
        • λͺ¨λΈ 개발 - μœ νš¨μ„± 검사 κ΅¬ν˜„
        • λͺ¨λΈ 개발 - Association
        • λͺ¨λΈ 개발 - 콜백
        • λͺ¨λΈ 개발 - λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
        • λͺ¨λΈ 개발 - 데이터 μ΄ˆκΈ°ν™”
        • 컨트둀러 개발 - μš”μ²­ 정보 μΆ”μΆœ
        • 컨트둀러 개발 - 응닡
        • 컨트둀러 개발 - μƒνƒœ 관리
        • λΌμš°νŒ… - RESTful
        • λΌμš°νŒ… - RESTful μΈν„°νŽ˜μ΄μŠ€μ˜ μ‚¬μš©μž μ •μ˜ν™”
        • λΌμš°νŒ… - RESTful ν•˜μ§€ μ•Šμ€ 라우트 μ •μ˜
        • ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - μ€€λΉ„
        • ν…ŒμŠ€νŠΈ - Unit ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - Functional ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - Integration ν…ŒμŠ€νŠΈ
        • ν΄λΌμ΄μ–ΈνŠΈ 개발 - Sprockets vs Webpacker
        • ν΄λΌμ΄μ–ΈνŠΈ 개발 - Sprockets
    • Node.js & Express
      • κΈ°λ³Έ κ°œλ…
      • npx
    • Programing Language
      • Java
        • JavaDoc에 λŒ€ν•΄
        • invocation에 λŒ€ν•΄μ„œ
        • μ–΄λ…Έν…Œμ΄μ…˜
        • μΆ”μƒν΄λž˜μŠ€ & μΈν„°νŽ˜μ΄μŠ€
        • Package
        • μ˜€λ²„λ‘œλ”© vs μ˜€λ²„λΌμ΄λ”©
      • Javascript
        • TCP School 훑어보기
          • νƒ€μž…
          • ν˜• λ³€ν™˜
          • λ³€μˆ˜
          • μ—°μ‚°μž
          • 반볡문
          • λ°°μ—΄(array)
          • ν•¨μˆ˜
          • ν•¨μˆ˜ - μŠ€μ½”ν”„μ™€ ν˜Έμ΄μŠ€νŒ…
          • ν•¨μˆ˜ - λ§€κ°œλ³€μˆ˜μ™€ 인수
          • ν•¨μˆ˜ - 미리 μ •μ˜λœ μ „μ—­ ν•¨μˆ˜
          • 객체
          • ν”„λ‘œν† νƒ€μž…
          • DOM
          • BOM - Window 객체
          • 이벀트(event)
      • Ruby
        • πŸ“”νΌνŽ™νŠΈ 루비
    • DB
      • Redis
        • Redis κ°œμš”
      • Index(인덱슀)?
      • DB Transaction & Lock
      • λ™μ‹œμ„± μ œμ–΄μ— κ΄€ν•˜μ—¬
      • Lock(잠금)μ΄λž€?
      • ActiveRecord lock vs with_lock
      • Table lock vs Row lock
      • WHERE 1=1 ꡬ문에 λŒ€ν•˜μ—¬
      • COUNT(*) vs COUNT(indexed column)
      • πŸ“•κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹€μ „μž…λ¬Έ
      • πŸ“”SQL 첫걸음
      • πŸ“”λͺ¨λ‘μ˜ SQL
    • Design Patterns
      • Observer pattern
      • Flyweight pattern
      • Singleton pattern
    • OOP
      • πŸ“”μ˜€λΈŒμ νŠΈ
        • 6μž₯ λ©”μ‹œμ§€μ™€ μΈν„°νŽ˜μ΄μŠ€
      • ν΄λž˜μŠ€κ°„ 관계 간단 정리
    • Regex
    • Collaboration
      • Git
      • Sourcetree
  • DAILY REVIEW
    • 2021
      • August
        • 2021-08-25(Wed)
        • 2021-08-23(Mon)
        • 2021-08-11(Wed)
        • 2021-08-04(Wed)
        • 2021-08-03(Tue)
        • 2021-08-02(Mon)
      • July
        • 2021-07-29(Thu)
        • 2021-07-26(Mon)
        • 2021-07-23(Fri)
        • 2021-07-22(Thu)
        • 2021-07-21(Wed)
        • 2021-07-20(Tue)
        • 2021-07-19(Mon)
        • 2021-07-15(Thu)
        • 2021-07-14(Wed)
        • 2021-07-13(Tue)
        • 2021-07-12(Mon)
      • June
        • 2021-06-05(Sat)
        • 2021-06-04(Fri)
        • 2021-06-03(Thu)
        • 2021-06-02(Wed)
        • 2021-06-01(Tue)
      • May
        • 2021-05-31(Mon)
        • 2021-05-29(Sat)
        • 2021-05-28(Fri)
        • 2021-05-27(Thu)
        • 2021-05-26(Wed)
        • 2021-05-25(Tue)
        • 2021-05-24(Mon)
        • 2021-05-22(Sat)
        • 2021-05-21(Fri)
        • 2021-05-20(Thu)
        • 2021-05-19(Wed)
        • 2021-05-18(Tue)
        • 2021-05-17(Mon)
        • 2021-05-15(Sat)
        • 2021-05-13(Thu)
        • 2021-05-12(Wed)
        • 2021-05-11(Tue)
        • 2021-05-10(Mon)
        • 2021-05-03(Mon)
      • April
        • 2021-04-30(Fri)
        • 2021-04-29(Thu)
        • 2021-04-28(Wed)
        • 2021-04-27(Tue)
        • 2021-04-26(Mon)
        • 2021-04-24(Sat)
        • 2021-04-23(Fri)
        • 2021-04-21(Wed)
        • 2021-04-20(Tue)
        • 2021-04-19(Mon)
        • 2021-04-18(Sun)
        • 2021-04-16(Fri)
        • 2021-04-15(Thu)
        • 2021-04-14(Wed)
        • 2021-04-12(Mon)
        • 2021-04-11(Sun)
        • 2021-04-09(Fri)
        • 2021-04-08(Thu)
        • 2021-04-06(Tue)
        • 2021-04-05(Mon)
        • 2021-04-04(Sun)
        • 2021-04-03(Sat)
        • 2021-04-02(Fri)
        • 2021-04-01(Thu)
      • March
        • 2021-03-29(Mon)
        • 2021-03-28(Sun)
        • 2021-03-26(Fri)
        • 2021-03-25(Thu)
        • 2021-03-24(Wed)
        • 2021-03-23(Tue)
        • 2021-03-22(Mon)
        • 2021-03-21(Sun)
        • 2021-03-20(Sat)
        • 2021-03-17(Wed)
        • 2021-03-16(Tue)
        • 2021-03-15(Mon)
        • 2021-03-12(Fri)
        • 2021-03-11(Thu)
        • 2021-03-10(Wed)
        • 2021-03-09(Tue)
        • 2021-03-08(Mon)
        • 2021-03-07(Sun)
        • 2021-03-05(Fri)
        • 2021-03-03(Wed)
        • 2021-03-02(Tue)
        • 2021-03-01(Mon)
      • Feb
        • 2021-02-26(Fri)
        • 2021-02-25(Thu)
        • 2021-02-24(Wed)
        • 2021-02-23(Tue)
        • 2021-02-22(Mon)
        • 2021-02-19(Fri)
        • 2021-02-18(Thu)
        • 2021-02-17(Wed)
        • 2021-02-16(Tue)
        • 2021-02-15(Mon)
        • 2021-02-14(Sun)
        • 2021-02-13(Sat)
        • 2021-02-12(Fri)
        • 2021-02-10(Wed)
        • 2021-02-09(Tue)
        • 2021-02-08(Mon)
        • 2021-02-07(Sun)
        • 2021-02-05(Fri)
        • 2021-02-03(Wed)
        • 2021-02-02(Tue)
        • 2021-02-01(Mon)
      • Jan
        • 2021-01-29(Fri)
        • 2021-01-28(Thu)
        • 2021-01-27(Wed)
        • 2021-01-26(Tue)
        • 2021-01-25(Mon)
        • 2021-01-23(Sat)
        • 2021-01-22(Fri)
        • 2021-01-20(Wed)
        • 2021-01-19(Tue)
        • 2021-01-18(Mon)
        • 2021-01-12(Tue)
        • 2020-01-11(Mon)
        • 2021-01-08(Fri)
        • 2021-01-07(Thu)
        • 2021-01-06(Wed)
        • 2021-01-05(Tue)
        • 2021-01-04(Mon)
        • 2021-01-01(Fri)
    • 2020
      • Dec
        • 2020-12-30(Thu)
        • 2020-12-25(Fri)
        • 2020-12-24(Thu)
        • 2020-12-23(Wed)
        • 2020-12-22(Tue)
        • 2020-12-21(Mon)
        • 2020-12-18 (Fri)
      • Nov
        • 2020-11-30(Mon)
        • 2020-11-28(Sat)
        • 2020-11-26(Thu)
        • 2020-11-25(Wed)
        • 2020-11-24(Tue)
        • 2020-11-23(Mon)
        • 2020-11-22(Sun)
        • 2020-11-20(Fri)
        • 2020-11-19(Thu)
        • 2020-11-18(Wed)
        • 2020-11-17(Tue)
        • 2020-11-14(Sat)
        • 2020-11-13(Fri)
        • 2020-11-12(Thu)
        • 2020-11-11(Wed)
        • 2020-11-09(Mon)
        • 2020-11-07(Sat)
        • 2020-11-05(Thu)
        • 2020-11-04(Wed)
        • 2020-11-03(Tue)
        • 2020-11-02(Mon)
    • Good article 아카이빙
Powered by GitBook
On this page
  • 상세 ν•™μŠ΅ λ‚΄μš©
  • μ˜€λ²„λ‘œλ”© vs μ˜€λ²„λΌμ΄λ”©
  • μ˜€λ²„λ‘œλ”©
  • μ˜€λ²„λΌμ΄λ”©
  • Package
  • μΆ”μƒν΄λž˜μŠ€ vs μΈν„°νŽ˜μ΄μŠ€
  • μΈν„°νŽ˜μ΄μŠ€μ˜ νŠΉμ§•
  • μΈν„°νŽ˜μ΄μŠ€μ˜ μž₯점
  • κ·Έλž˜μ„œ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ 곡톡점/차이점은?
  • 곡톡점
  • 차이점
  • λ””ν΄νŠΈ λ©”μ„œλ“œ
  • ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평
  • λ‹€μŒ ν•™μŠ΅ κ³„νš

Was this helpful?

  1. DAILY REVIEW
  2. 2021
  3. April

2021-04-04(Sun)

ν•­λͺ©

λ‚΄μš©

ν•™μŠ΅ λ‚ μ§œ

2021-04-04(일)

ν•™μŠ΅ μ‹œκ°„

09:00~23:00

ν•™μŠ΅ λ²”μœ„ 및 주제

java의 정석 훑어보기

ν•™μŠ΅ λͺ©ν‘œ

ν—·κ°ˆλ¦¬λŠ” κ°œλ…λ“€μ„ λͺ…ν™•νžˆ 파보자.

λ™λ£Œ ν•™μŠ΅ 방법

-

상세 ν•™μŠ΅ λ‚΄μš©

λͺ…λ£Œν•˜κ²Œ 말둜 ν‘œν˜„ν•˜κΈ° νž˜λ“€μ—ˆλ˜ 뢀뢄듀을 μ •λ¦¬ν•΄λ³΄μž~!

μ˜€λ²„λ‘œλ”© vs μ˜€λ²„λΌμ΄λ”©

μ˜€λ²„λ‘œλ”©

  • κ°œλ…: 이름은 κ°™μ§€λ§Œ μ‹œκ·Έλ‹ˆμ²˜(νŒŒλΌλ―Έν„° 수, νƒ€μž…)κ°€ λ‹€λ₯Έ λ©”μ†Œλ“œλ₯Ό μ€‘λ³΅μœΌλ‘œ μ„ μ–Έν•˜λŠ” 것. 즉, 기쑴에 μ—†λŠ” μƒˆλ‘œμš΄ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 것이닀.

  • νŠΉμ§•

    • λ©”μ†Œλ“œ 이름이 같아야함.

    • μ‹œκ·Έλ‹ˆμ²˜λŠ” 달라야함. νŒŒλΌλ―Έν„° μˆ˜κ°€ λ‹€λ₯΄κ±°λ‚˜ νƒ€μž…μ΄ λ‹€λ₯΄κ±°λ‚˜, λ‘˜ λ‹€ λ‹€λ₯΄κ±°λ‚˜.

    • 리턴 값은 μ‹œκ·Έλ‹ˆμ²˜μ— ν•΄λ‹Ήλ˜μ§€ μ•ŠμŒ.

    • μ ‘κ·Ό μ œμ–΄μžλŠ” 자유둭게(κ°™κ±°λ‚˜ λ‹€λ₯΄κ²Œ) μ§€μ •ν•  수 μžˆλ‹€.

  • μ“°λŠ” 이유

    • 가독성 μ¦κ°€μ‹œν‚΄.

    • 같은 κΈ°λŠ₯을 ν•˜λŠ” λ©”μ„œλ“œ 관리가 μ‰¬μ›Œμ§.

μ˜€λ²„λΌμ΄λ”©

  • κ°œλ…: λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œμ˜ λ™μž‘ 방법을 λ³€κ²½(μž¬μ •μ˜)ν•˜μ—¬ μš°μ„ μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것.

  • νŠΉμ§•

    • λ©”μ†Œλ“œ 이름이 같아야함.

    • μ‹œκ·Έλ‹ˆμ²˜κ°€ 같아야함. νŒŒλΌλ―Έν„° 수, νŒŒλΌλ―Έν„°μ˜ νƒ€μž…μ΄ κ°™μ•„μ•Όν•œλ‹€.

    • λ©”μ†Œλ“œ λ¦¬ν„΄ν˜•μ΄ κ°™μ•„μ•Όν•œλ‹€.

    • μ˜€λ²„λΌμ΄λ“œ ν•˜κ³ μž ν•˜λŠ” λ©”μ†Œλ“œκ°€ μƒμœ„ ν΄λž˜μŠ€μ— μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€.

    • 상속 받은 클래슀의 λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•  λ•Œ, μŠ€νƒœν‹± λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•˜κ²Œ 되면 μƒμœ„ 클래슀의 λ©”μ†Œλ“œκ°€ ν•˜μ΄λ”© μ²˜λ¦¬λœλ‹€. μžλ°”μ—μ„œλŠ” 이 ν•˜μ΄λ”© 처리λ₯Ό ꢌμž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

    • private λ©”μ„œλ“œλŠ” μ˜€λ²„λΌμ΄λ”©μ΄ λΆˆκ°€ν•˜λ‹€. λ‹Ήμ—°ν•œ 것이, μžμ‹ ν΄λž˜μŠ€μ—μ„œλ„ μ ‘κ·Ό λΆˆκ°€μ΄λ‹ˆκΉŒ.

    • 참고둜 @Override μ–΄λ…Έν…Œμ΄μ…˜μ„ 적어주면 μ˜€λ²„λΌμ΄λ”©μ΄ μ œλŒ€λ‘œ κ΅¬ν˜„λ˜μ—ˆλŠ”μ§€λ₯Ό 컴파일 νƒ€μž„μ— κ²€μ¦ν•œλ‹€.

    • μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ„€μ •ν•˜λŠ”λ° λ³„λ„μ˜ κ·œμΉ™μ΄ μ‘΄μž¬ν•œλ‹€.

      • μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©ν•˜λŠ” λ©”μ†Œλ“œμ˜ μ ‘κ·Ό μ œμ–΄μžλŠ” λΆ€λͺ¨ ν΄λž˜μŠ€λ³΄λ‹€ 더 쒁게 μ„€μ •ν•  수 μ—†λ‹€.

      • μ˜ˆμ™Έ(Exception)은 λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œλ³΄λ‹€ 많이 μ„ μ–Έν•  수 μ—†λ‹€.

      • static λ©”μ†Œλ“œλ₯Ό μΈμŠ€ν„΄μŠ€μ˜ λ©”μ†Œλ“œλ‘œ λ˜λŠ” κ·Έ λ°˜λŒ€λ‘œ λ°”κΏ€ 수 μ—†λ‹€.

Package

  • νŒ¨ν‚€μ§€λŠ” 클래슀의 λ¬ΆμŒμ΄λ‹€.

  • μ„œλ‘œ κ΄€λ ¨λœ ν΄λž˜μŠ€λ“€λΌλ¦¬ κ·Έλ£Ή λ‹¨μœ„λ‘œ λ¬Άμ–΄ λ†“μŒμœΌλ‘œμ¨ 클래슀λ₯Ό 효율적으둜 관리할 수 μžˆλ‹€.

  • λ˜ν•œ μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— 같은 μ΄λ¦„μ˜ ν΄λž˜μŠ€κ°€ μ •μ˜λ˜λŠ” 것이 κ°€λŠ₯ν•˜λ―€λ‘œ, μžμ‹ λ§Œμ˜ νŒ¨ν‚€μ§€ 체계λ₯Ό μœ μ§€ν•¨μœΌλ‘œμ¨ λ‹€λ₯Έ κ°œλ°œμžκ°€ κ°œλ°œν•œ 클래슀 라이브러리의 ν΄λž˜μŠ€μ™€ 이름이 μΆ©λŒν•˜λŠ” 것을 ν”Όν•  수 μžˆλ‹€.

  • 클래슀의 μ‹€μ œ 이름은 νŒ¨ν‚€μ§€λͺ…을 ν¬ν•¨ν•œ 것이닀. ex) String 은 java.lang.String 이 ν’€λ„€μž„μ΄λ‹€. java.lang νŒ¨ν‚€μ§€μ— μ†ν•œ String ν΄λž˜μŠ€λΌλŠ” 의미.

  • ν΄λž˜μŠ€κ°€ 물리적으둜 ν•˜λ‚˜μ˜ 클래슀파일(.class)인 것과 같이 νŒ¨ν‚€μ§€λŠ” 물리적으둜 ν•˜λ‚˜μ˜ 디렉토리이닀.

  • μžμž˜ν•œ μ œμ•½ νŠΉμ§•

    • ν•˜λ‚˜μ˜ μ†ŒμŠ€ νŒŒμΌμ—λŠ” 첫 번째 λ¬Έμž₯으둜 단 ν•œλ²ˆμ˜ νŒ¨ν‚€μ§€ μ„ μ–Έλ§Œμ„ ν—ˆμš©ν•œλ‹€.

    • λͺ¨λ“  ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€μ— 속해야 ν•œλ‹€. μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ unnamed package 에 μ†ν•˜κ²Œ λœλ‹€.

    • νŒ¨ν‚€μ§€λͺ…은 λŒ€μ†Œλ¬Έμžλ₯Ό λͺ¨λ‘ ν—ˆμš©ν•˜μ§€λ§Œ, 클래슀λͺ…κ³Ό μ‰½κ²Œ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄μ„œ μ†Œλ¬Έμžλ‘œ ν•˜λŠ” 것을 μ›μΉ™μœΌλ‘œ ν•˜κ³  μžˆλ‹€.

μΆ”μƒν΄λž˜μŠ€ vs μΈν„°νŽ˜μ΄μŠ€

μΆ”μƒν΄λž˜μŠ€λŠ” C++μ—μ„œ 많이 λ‹€λ€˜κ³ , 객체지ν–₯ ν•™μŠ΅ν•˜λ©° μœ μš©ν•¨μ„ μ²΄κ°ν•œ λ°”μžˆλ‹€. 그런데 javaμ—λŠ” λ”°λ‘œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ“°λŠ” 것 μ•„λ‹Œκ°€. μΈν„°νŽ˜μ΄μŠ€κ°€ 무엇이고 μΆ”μƒν΄λž˜μŠ€μ™€μ˜ 차이점이 무엇인지 ν™•μΈν•΄λ³΄μž.

μΈν„°νŽ˜μ΄μŠ€μ˜ νŠΉμ§•

  • μΈν„°νŽ˜μ΄μŠ€λŠ” μΌμ’…μ˜ μΆ”μƒν΄λž˜μŠ€μ΄λ‹€.

  • κ·Έλž˜μ„œ μΈν„°νŽ˜μ΄μŠ€λŠ” μΆ”μƒν΄λž˜μŠ€μ²˜λŸΌ μƒμ„±μžλ₯Ό κ°€μ§ˆ 수 μ—†λ‹€. κ΅¬ν˜„ν•˜λŠ” 클래슀λ₯Ό ν†΅ν•΄μ„œλ§Œ μΈμŠ€ν„΄μŠ€ν™” ν•  수 μžˆλ‹€.

  • μΈν„°νŽ˜μ΄μŠ€λŠ” μΆ”μƒν΄λž˜μŠ€λ³΄λ‹€ 좔상화 정도가 λ†’μ•„μ„œ μΆ”μƒν¬λž˜μŠ€μ™€ 달리 λͺΈν†΅μ„ κ°–μΆ˜ 일반 λ©”μ„œλ“œ λ˜λŠ” λ©€λ²„λ³€μˆ˜λ₯Ό κ΅¬μ„±μ›μœΌλ‘œ κ°€μ§ˆ 수 μ—†λ‹€. λŒ€μ‹  였직 μΆ”μƒλ©”μ„œλ“œμ™€ μƒμˆ˜λ§Œμ„ λ©€λ²„λ‘œ κ°€μ§ˆ 수 μžˆλ‹€.

  • μΈν„°νŽ˜μ΄μŠ€μ˜ 멀버듀은 μ•„λž˜ μ œμ•½μ‚¬ν•­μ„ κ°€μ§„λ‹€.

    • λͺ¨λ“  λ©€λ²„λ³€μˆ˜λŠ” public static final 이어야 ν•˜λ©°, 이λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.

    • λͺ¨λ“  λ©”μ„œλ“œλŠ” public abstract 이어야 ν•˜λ©°, 이λ₯Ό μƒλž΅ν•  수 μžˆλ‹€. 단, JDK1.8λΆ€ν„° static λ©”μ„œλ“œμ™€ λ””ν΄νŠΈ λ©”μ„œλ“œλŠ” μ˜ˆμ™Έμ΄λ‹€.

  • μΈν„°νŽ˜μ΄μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œλΆ€ν„°λ§Œ 상속받을 수 μžˆλ‹€. ν΄λž˜μŠ€μ™€ 달리 닀쀑상속이 κ°€λŠ₯ν•˜λ‹€.

  • μΈν„°νŽ˜μ΄μŠ€μ˜ μ΄λ¦„μ—λŠ” 주둜 Fightableκ³Ό 같이 '~을 ν•  수 μžˆλŠ”'의 의미인 'able'둜 λλ‚˜λŠ” 것듀이 λ§Žμ€λ°, κ·Έ μ΄μœ λŠ” μ–΄λ– ν•œ κΈ°λŠ₯ λ˜λŠ” ν–‰μœ„λ₯Ό ν•˜λŠ”λ° ν•„μš”ν•œ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€λŠ” 의미λ₯Ό κ°•μ‘°ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€.

  • 리턴 νƒ€μž…μ΄ μΈν„°νŽ˜μ΄μŠ€λΌλŠ” 것은 λ©”μ„œλ“œκ°€ ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

μΈν„°νŽ˜μ΄μŠ€μ˜ μž₯점

  • 개발 μ‹œκ°„μ„ λ‹¨μΆ•μ‹œν‚¬ 수 μžˆλ‹€.

    • μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•΄μ„œ 클래슀의 μ„ μ–Έκ³Ό κ΅¬ν˜„μ„ 뢄리할 수 μžˆλ‹€. 그럼 μΈν„°νŽ˜μ΄μŠ€ λ‚΄λΆ€ κ΅¬ν˜„μ΄ μ™„λ£Œλ˜μ§€ μ•Šλ”λΌλ„ μΈν„°νŽ˜μ΄μŠ€ μ„ μ–ΈλΆ€λ₯Ό μ°Έκ³ ν•˜μ—¬ 개발이 κ°€λŠ₯ν•˜λ‹€.

  • ν‘œμ€€ν™”κ°€ κ°€λŠ₯ν•˜λ‹€.

  • μ„œλ‘œ κ΄€κ³„μ—†λŠ” ν΄λž˜μŠ€λ“€μ—κ²Œ 관계λ₯Ό 맺어쀄 수 μžˆλ‹€. 곡톡점을 λΆ€μ—¬ν•˜λŠ” 것!

    • μ„œλ‘œ 상속관계에 μžˆμ§€λ„ μ•Šκ³ , 같은 μ‘°μƒν΄λž˜μŠ€λ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•Šμ€ μ„œλ‘œ μ•„λ¬΄λŸ° 관계도 μ—†λŠ” ν΄λž˜μŠ€λ“€μ—κ²Œ ν•˜λ‚˜μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ³΅ν†΅μ μœΌλ‘œ κ΅¬ν˜„ν•˜λ„λ‘ ν•¨μœΌλ‘œμ¨ 관계λ₯Ό λ§Ίμ–΄ 쀄 수 μžˆλ‹€.

  • μ˜μ‘΄μ„± μ€„μ΄λŠ” 섀계가 κ°€λŠ₯ν•˜λ‹€.

κ·Έλž˜μ„œ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ 곡톡점/차이점은?

곡톡점

  1. λ‘˜ λ‹€ μ„ μ–Έλ§Œ 있고 κ΅¬ν˜„ λ‚΄μš©μ΄ μ—†λ‹€.

  2. κ·Έλž˜μ„œ μΈμŠ€ν„΄μŠ€ν™”λ₯Ό ν•  수 μ—†λ‹€.

  3. κ²°κ΅­ μžμ‹ ν΄λž˜μŠ€κ°€ 무언가λ₯Ό λ°˜λ“œμ‹œ κ΅¬ν˜„ν•˜λ„λ‘ μœ„μž„ν•΄μ•Όν•  λ•Œ μ‚¬μš©ν•œλ‹€.

차이점

  1. λͺ©μ 

    • 좔상 클래슀: 곡톡적인 κΈ°λŠ₯을 ν•˜λŠ” κ°μ²΄λ“€μ˜ 좔상화

    • μΈν„°νŽ˜μ΄μŠ€: κ΅¬ν˜„ν•˜λŠ” λͺ¨λ“  객체에 λŒ€ν•΄ νŠΉμ •ν•œ λ©”μ„œλ“œκ°€ λ°˜λ“œμ‹œ μ‘΄μž¬ν•˜λ„λ‘ 보μž₯ν•˜κΈ° μœ„ν•¨.

    • 상속 κ°€λŠ₯ 수

      • 좔상 클래슀: 단일 μƒμ†λ§Œ κ°€λŠ₯

      • μΈν„°νŽ˜μ΄μŠ€: 닀쀑 상속 κ°€λŠ₯

    • μ‚¬μš©ν•˜λŠ” 상황

      • 좔상 클래슀: 말 κ·ΈλŒ€λ‘œ 좔상화 μ‹œν‚¬ λ•Œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. 곡톡점을 μ°Ύμ•„μ„œ μΆ”μƒν™”μ‹œμΌœμ„œ μ‚¬μš©ν•˜λŠ” 것이 κ°œλ°œμ—μ„œ 이득일 λ•Œ μ‚¬μš©ν•˜μž.

      • μΈν„°νŽ˜μ΄μŠ€: νŠΉμ • λ°μ΄ν„°νƒ€μž…μ˜ ν–‰μœ„λ₯Ό νŠΉλ³„ν•˜κ²Œ κ΅¬ν˜„ν•˜κΈ°λ₯Ό μ›ν•˜μ§€λ§Œ λˆ„κ°€ κ·Έκ²ƒμ˜ ν–‰μœ„λ₯Ό κ΅¬ν˜„ ν–ˆλŠ”μ§€μ— λŒ€ν•΄ 관심이 없을 λ•Œ. 그리고 닀쀑 κ΅¬ν˜„μƒμ†μ˜ 이점을 λˆ„λ €μ•Όν•  λ•Œ μ‚¬μš©ν•˜μž.

λ””ν΄νŠΈ λ©”μ„œλ“œ

μΈν„°νŽ˜μ΄μŠ€κ°€ λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©΄ μ’‹κ² μ§€λ§Œ, 아무리 섀계λ₯Ό μž˜ν•΄λ„ λ³€κ²½ν•  일이 생기기 λ§ˆλ ¨μ΄λ‹€. 그럼 μΈν„°νŽ˜μ΄μŠ€κ°€ μΆ”μƒλ©”μ„œλ“œλ‘œλ§Œ μ΄λ€„μ Έμžˆλ‹€λ©΄, μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ λͺ¨λ“  ν΄λž˜μŠ€λ“€μ΄ μƒˆλ‘œ μΆ”κ°€λœ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€λŠ” λ¬Έμ œκ°€ μžˆλ‹€. 이에 JDK μ„€κ³„μžλ“€μ€ 고심 끝에 λ””ν΄νŠΈ λ©”μ„œλ“œ(default method)λ₯Ό κ³ μ•ˆν•΄λƒˆλ‹€.

λ””ν΄νŠΈ λ©”μ„œλ“œλŠ” 쑰상 ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•œ 것과 λ™μΌν•œ 효과λ₯Ό λˆ„λ¦΄ 수 μžˆλ‹€.

ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평

개발 μ§„μ§œ μž˜ν•˜κ³  μ‹Άλ‹€.. 이게 μ°Έ μž˜ν•˜λ©΄ λ§Œλ“€κ³  싢은거 λšλ”±λšλ”± λ§Œλ“€ 수 μžˆμ„ 것 같은데!!

λ‹€μŒ ν•™μŠ΅ κ³„νš

  • QR μ½”λ“œ 리더기에 ν…Œμ΄λΈ” 뢙이기

Previous2021-04-05(Mon)Next2021-04-03(Sat)

Last updated 4 years ago

Was this helpful?

μ°Έκ³