λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
FOR SW ENGINEERπŸ‘©‍πŸ’»/JAVA

JAVA_좔상화(Abstract)

by μ”¨λ‹ˆ 2021. 9. 13.
728x90

좔상화(Abstract)

- abstractν‚€μ›Œλ“œ ν΄λž˜μŠ€μ™€ λ©”μ„œλ“œμ— 적용됨.

- 좔상(abstract)ν΄λž˜μŠ€λŠ” μ‹€μ œ ν΄λž˜μŠ€λ“€μ˜ λ©”μ„œλ“œλ“€μ˜ μ΄λ¦„μœΌ 톡일할 λͺ©μ μœΌλ‘œ μ‚¬μš©ν•¨.

- 좔상(abstract) λ©”μ„œλ“œκ°€ μžˆλŠ” ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ 좔상 ν΄λž˜μŠ€μ—¬μ•Ό 함.

- μΆ”μƒν΄λž˜μŠ€μ— λ°˜λ“œμ‹œ 좔상 λ©”μ„œλ“œλ§Œ μ„ μ–Έν•  ν•„μš”λŠ” μ—†κ³  일반 λ©”μ„œλ“œλ„ μ„ μ–Έ κ°€λŠ₯.

 

β–Ά 좔상화λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ€ λ‚˜μœ μ˜ˆμ‹œ

-λΆ€λͺ¨ν΄λž˜μŠ€ HeadStoreλ₯Ό 상속받은 SeoulStoreμ—μ„œ melonλ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”©μ„ 빼먹게되면,

- μ›ν•˜μ§€ μ•ŠλŠ” 결과값을 λ„μΆœν•΄ λ‚Όμˆ˜ 있기 λ•Œλ¬Έμ—, μ‹€μ „μƒν™©μ—μ„œ 이 μ‹€μˆ˜λŠ” μ•„μ£Ό 큰 μ‹€μˆ˜λ‘œ μ΄μ–΄μ§ˆ 수 있음.

- μ΄λŸ¬ν•œ μ‹€μˆ˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μΆ”μƒν΄λž˜μŠ€λ₯Ό μ‚¬μš©ν•¨.

 

1. μΆ”μƒν΄λž˜μŠ€

- μΆ”μƒν΄λž˜μŠ€λŠ” newν‚€μ›Œλ“œ μ΄μš©ν•΄ 객체 λ§Œλ“€μ§€ λͺ»ν•˜κ³  였직 상속 톡해 μžμ‹ 클래슀둜 ꡬ체화 μ‹œμΌœμ•Όν•¨.

- μΆ”μƒν΄λž˜μŠ€λ„ 일반 ν΄λž˜μŠ€μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ λ©€λ²„λ³€μˆ˜, μƒμ„±μž, λ©”μ„œλ“œ μ„ μ–Έκ°€λŠ₯.

- newμ‚¬μš©ν•΄ 직접 μƒμ„±μž 호좜 λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ, μžμ‹ 객체 생성될 λ•Œ super()λ₯Ό ν˜ΈμΆœν•΄ 좔상 클래슀 객체 μƒμ„±ν•˜λ―€λ‘œ 좔상 ν΄λž˜μŠ€λ„ μƒμ„±μžκ°€ λ°˜λ“œμ‹œ μžˆμ–΄μ•Ό 함.

2 .좔상 λ©”μ„œλ“œ

- μΆ”μƒλ©”μ„œλ“œλŠ” 좔상 클래슀 λ‚΄μ—μ„œλ§Œ μ„ μ–Έκ°€λŠ₯.

- 좔상 λ©”μ„œλ“œλŠ” λ©”μ„œλ“œμ˜ μ„ μ–ΈλΆ€λ§Œ 있고 λ©”μ„œλ“œ μ‹€ν–‰ λ‚΄μš©μ΄ λ“€μ–΄κ°€λŠ” μ€‘κ΄„ν˜Έ {}κ°€ μ—†λŠ” λ©”μ„œλ“œλ₯Ό 말함.

- 좔상 클래슀 섀계할 λ•Œ μžμ‹ ν΄λž˜μŠ€κ°€ λ°˜λ“œμ‹œ μ‹€ν–‰ λ‚΄μš© μ±„μš°λ„λ‘ κ°•μš”ν•˜κ³  싢은 λ©”μ„œλ“œ μžˆμ„ λ•Œ ν•΄λ‹Ή λ©”μ„œλ“œ 좔상 λ©”μ„œλ“œλ‘œ μ„ μ–Έ.

- μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ°˜λ“œμ‹œ λΆ€λͺ¨ μΆ”μƒν΄λž˜μŠ€μ˜ 좔상 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•΄ μ‹€ν–‰λ‚΄μš© μž‘μ„±ν•΄μ•Όν•¨. 그렇지 μ•ŠμœΌλ©΄ 였λ₯˜λ°œμƒ.

 

μΆ”μƒλ©”μ„œλ“œ 있으면 ν΄λž˜μŠ€λ„ 좔상 ν΄λž˜μŠ€μ—¬μ•Ό 함.
μΆ”μƒν΄λž˜μŠ€λŠ” μΌλ°˜λ³€μˆ˜, μΌλ°˜λ©”μ„œλ“œ, μƒμ„±μž λͺ¨λ‘ κ°€μ§ˆμˆ˜ 있음

ν•œλ§ˆλ””λ‘œ μΆ”μƒν΄λž˜μŠ€λŠ” μΆ”μƒλ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ°μœ„ν•œ 클래슀라고 봐도 무방함.

μΆ”μƒν™”ν΄λž˜μŠ€ HeadStoreλ₯Όμƒμ†λ°›λŠ” SeoulStore와 BusanStore클래슀

좔상화 클래슀λ₯Ό 상속받은 ν΄λž˜μŠ€λ‚΄μ— 좔상화 ν΄λž˜μŠ€λ‚΄ μ„ μ–Έν•œ 좔상화 λ©”μ†Œλ“œ 무쑰건 μ˜€λ²„λΌμ΄λ”© 해주어야함.

μœ„μ—μ„œ 좔상화λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„ μ˜€λ²„λΌμ΄λ”©μ„ 해주지 λͺ»ν•˜λŠ” μ‹€μˆ˜/상황을 방지할 수 있게 ν•΄μ€Œ.

 

3. javaμ—μ„œ abstract의 의미

- μ‚¬μš©μž 클래슀λ₯Ό μ •μ˜ν• λ•Œ ꡳ이 abstract클래슀둜 섀계할 ν•„μš” μ—†μŒ.

- But, μžλ°” λ‚΄λΆ€ λ§Žμ€ ν΄λž˜μŠ€λŠ” abstract클래슀둜 μ •μ˜ λ˜μ–΄μžˆμŒμ„ μ•Œμ•„λ‘μ–΄μ•Ό 함.

- λ˜ν•œ, μžμ‹ν΄λž˜μŠ€λ‘œ 생성해 λΆ€λͺ¨ν΄λž˜μŠ€(좔상 클래슀)에 μ €μž₯ν•΄μ„œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€λŠ” 점에 μ΅μˆ™ν•΄μ Έμ•Ό 함.

 

728x90