πŸ’»

Java ν”„λ‘œκ·Έλž˜λ° - μΆ”μƒν΄λž˜μŠ€(abstract) λ³Έλ¬Έ

KITRI/JAVA

Java ν”„λ‘œκ·Έλž˜λ° - μΆ”μƒν΄λž˜μŠ€(abstract)

λ˜νš¨λ‹ˆ 2020. 5. 8. 10:56

abstract μ΄  μ‚¬μš©λ  수 μžˆλŠ” κ³³ - 클래슀, λ©”μ„œλ“œ

 

객체λ₯Ό 직접 생성할 수 μžˆλŠ” 클래슀λ₯Ό 싀체 클래슀라고 ν•œλ‹€λ©΄ 이 ν΄λž˜μŠ€λ“€μ˜ 곡톡적인 νŠΉμ„±μ„ μΆ”μΆœν•΄μ„œ μ„ μ–Έν•œ 클래슀λ₯Ό 좔상 클래슀라고 ν•œλ‹€. μΆ”μƒν΄λž˜μŠ€μ™€ 싀체 ν΄λž˜μŠ€λŠ” μƒμ†μ˜ 관계λ₯Ό 가지고 μžˆλ‹€. μΆ”μƒν΄λž˜μŠ€κ°€ λΆ€λͺ¨μ΄κ³  싀체 ν΄λž˜μŠ€κ°€ μžμ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ 싀체 ν΄λž˜μŠ€λŠ” 좔상 클래슀의 λͺ¨λ“  νŠΉμ„±μ„ λ¬Όλ €λ°›κ³ , 좔가적인 νŠΉμ„±μ„ κ°€μ§ˆ 수 μžˆλ‹€. μ—¬κΈ°μ„œ νŠΉμ„±μ΄λž€ ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό λ§ν•œλ‹€. 

 

좔상 클래슀λ₯Ό λ§Œλ“œλŠ” 이유?

1) 싀체 ν΄λž˜μŠ€λ“€μ˜ κ³΅ν†΅λœ ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ 이름을 톡일할 λͺ©μ 

2) 싀체 클래슀λ₯Ό μž‘μ„±ν•  λ•Œ μ‹œκ°„μ„ μ ˆμ•½

 

λΆ€λͺ¨ν΄λž˜μŠ€μ—μ„œ μ •μ˜λ§Œ ν•˜κ³  κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€.

μžμ‹ν΄λž˜μŠ€μ—μ„œ ν•¨μˆ˜μž¬μ •μ˜ ν•΄μ€€λ‹€.(λ°˜κ°•μ œ)

 

 

μΆ”μƒν•¨μˆ˜λ₯Ό ν•˜λ‚˜λΌλ„ 가지고 있으면 μΆ”μƒν΄λž˜μŠ€λ‘œ ν‘œμ‹œν•΄μ•Όν•œλ‹€. 

 

μΆ”μƒν΄λž˜μŠ€λŠ” 싀체 클래슀의 κ³΅ν†΅λ˜λŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό μΆ”μΆœν•΄μ„œ λ§Œλ“€μ—ˆκΈ° λ•Œλ¬Έμ— 객체λ₯Ό 직접 μƒμ„±ν•΄μ„œ μ‚¬μš©ν•  수 μ—†λ‹€. λ‹€μ‹œλ§ν•΄ 좔상 ν΄λž˜μŠ€λŠ” new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±μ‹œν‚€μ§€ λͺ»ν•œλ‹€. 

 

[μ°Έκ³ ] ν΄λž˜μŠ€λŠ” κ΅¬ν˜„ν΄λž˜μŠ€, μ‹€ν–‰ν΄λž˜μŠ€, μΆ”μƒν΄λž˜μŠ€λ‘œ 3μ’…λ₯˜κ°€ μžˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λ„ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ 객체 λͺ»λ§Œλ“ λ‹€. λŒ€μ‹  μžμ‹ν΄λž˜μŠ€λ₯Ό 담아쀄 μˆ˜λŠ” μžˆλ‹€. ν‹€λ§Œ λ§Œλ“€μ–΄μ„œ μƒμ†ν•΄μ£ΌκΈ°λ•Œλ¬Έμ— 맀우 가볍닀. 닀쀑상속도 κ°€λŠ₯ν•˜λ‹€. μ‹€λ¬΄μ—μ„œ 많이 쓰인닀. 

 

 

예제 1)

 

/** @Description : μ‹œλ‚˜λ¦¬μ˜€
 *  1) λ‘œλ΄‡λͺ¨μ–‘은 νŒ”, λ‹€λ¦¬, λ¨Έλ¦¬, λͺΈν†΅μœΌλ‘œ κ΅¬μ„±λ˜μ–΄μžˆλ‹€.
 *  2) λ‘œλ΄‡μ€ κΈ°λ³Έμ μœΌλ‘œ κ±·κ³ , λ‹¬λ¦΄ μˆ˜ μžˆμ–΄μ•Ό ν•œλ‹€. 
 *  3) λ‘œλ΄‡ μ’…λ₯˜μ— λ”°λΌμ„œ λ‚ μˆ˜ μžˆκ³ , λ―Έμ‚¬μΌ μ μˆ˜ μžˆκ³ , κ²€μ„ κ°€μ§€κ³  μžˆλ‹€. 
 * 
 *  4) super λ‘œλ΄‡μ€ λ‚ μˆ˜ μžˆκ³ , λ―Έμ‚¬μΌ μ“Έμˆ˜ μžˆκ³ , κ²€μ„ κ°€μ§€κ³  μžˆλ‹€. 
 *  5) standard λ‘œλ΄‡μ€ λ‚ μˆ˜λŠ” μ—†κ³ , λ―Έμ‚¬μΌ μ“Έ μˆ˜μžˆκ³ , λͺ©κ²€μ€ κ°€μ§€κ³  μžˆλ‹€. 
 *  6) low λ‘œλ΄‡μ€ λ‚ μˆ˜λ„ μ—†κ³ , λ―Έμ‚¬μΌμ„  μ“Έ μˆ˜ μ—†κ³ , κ²€λ„ μ—†λ‹€.  

**/

RobotMain.java: λ©”μΈν΄λž˜μŠ€, Robot.java: 슈퍼클래슀(λΆ€λͺ¨ν΄λž˜μŠ€)

배열을 μ΄μš©ν•˜μ—¬ 객체둜 κ΄€λ¦¬ν•˜μ˜€λ‹€. 

LowRobot.java, StandardRobot.java, SuperRobot.java μ„œλΈŒν΄λž˜μŠ€(μžμ‹ν΄λž˜μŠ€)

 

μ‹€ν–‰κ²°κ³Ό

 

 

 

λ°˜μ‘ν˜•
Comments