λͺ©λ‘KITRI (108)

πŸ’»

Java ν”„λ‘œκ·Έλž˜λ° - μΈν„°νŽ˜μ΄μŠ€(interface), μ ‘κ·Όμ œν•œμž(public, private, protected, default)

μΈν„°νŽ˜μ΄μŠ€(interface) : μΈν„°νŽ˜μ΄μŠ€λž€? μΌμ’…μ˜ μΆ”μƒν΄λž˜μŠ€μ΄λ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” μΆ”μƒν΄λž˜μŠ€μ²˜λŸΌ μΆ”μƒλ©”μ„œλ“œλ₯Ό κ°–μ§€λ§Œ μΆ”μƒν΄λž˜μŠ€λ³΄λ‹€ 좔상화 정도가 λ†’μ•„μ„œ μΆ”μƒν΄λž˜μŠ€μ™€ 달리 λͺΈν†΅μ„ κ°–μΆ˜ 일반 λ©”μ„œλ“œ λ˜λŠ” λ©€λ²„λ³€μˆ˜λ₯Ό κ΅¬μ„±μ›μœΌλ‘œ κ°€μ§ˆ 수 μ—†λ‹€. 였직 μΆ”μƒλ©”μ„œλ“œμ™€ μƒμˆ˜λ§Œμ„ λ©€λ²„λ‘œ κ°€μ§ˆ 수 있으며, κ·Έ μ™Έμ˜ λ‹€λ₯Έ μ–΄λ– ν•œ μš”μ†Œλ„ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. μΆ”μƒν΄λž˜μŠ€λ₯Ό λΆ€λΆ„μ μœΌλ‘œλ§Œ μ™„μ„±λœ 'λ―Έμ™„μ„± 섀계도' 라고 ν•œλ‹€λ©΄, μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬ν˜„λœ 것은 아무 것도 μ—†κ³  λ°‘κ·Έλ¦Όλ§Œ κ·Έλ €μ Έ μžˆλŠ” 'κΈ°λ³Έ 섀계도' 라고 ν•  수 μžˆλ‹€. - μžλ°”μ—μ„œ μΈν„°νŽ˜μ΄μŠ€λŠ” 객체의 μ‚¬μš© 방법을 μ •μ˜ν•œ νƒ€μž…μ΄λ‹€. - 객체의 κ΅ν™˜μ„±μ„ λ†’μ—¬μ£ΌκΈ° λ•Œλ¬Έμ— λ‹€ν˜•μ„±μ„ κ΅¬ν˜„ν•˜λŠ” μ€‘μš”ν•œ 역할을 ν•œλ‹€. - (ν΄λž˜μŠ€λŠ” ν•„λ“œ, μƒμ„±μž, λ©”μ†Œλ“œλ₯Ό ꡬ성 λ©€λ²„λ‘œ κ°€μ§€λŠ”λ°) μΈν„°νŽ˜μ΄μŠ€λŠ”..

KITRI/JAVA 2020. 5. 8. 13:43
Java ν”„λ‘œκ·Έλž˜λ° - μΆ”μƒν΄λž˜μŠ€(abstract)

abstract 이 μ‚¬μš©λ  수 μžˆλŠ” κ³³ - 클래슀, λ©”μ„œλ“œ 객체λ₯Ό 직접 생성할 수 μžˆλŠ” 클래슀λ₯Ό 싀체 클래슀라고 ν•œλ‹€λ©΄ 이 ν΄λž˜μŠ€λ“€μ˜ 곡톡적인 νŠΉμ„±μ„ μΆ”μΆœν•΄μ„œ μ„ μ–Έν•œ 클래슀λ₯Ό 좔상 클래슀라고 ν•œλ‹€. μΆ”μƒν΄λž˜μŠ€μ™€ 싀체 ν΄λž˜μŠ€λŠ” μƒμ†μ˜ 관계λ₯Ό 가지고 μžˆλ‹€. μΆ”μƒν΄λž˜μŠ€κ°€ λΆ€λͺ¨μ΄κ³  싀체 ν΄λž˜μŠ€κ°€ μžμ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ 싀체 ν΄λž˜μŠ€λŠ” 좔상 클래슀의 λͺ¨λ“  νŠΉμ„±μ„ λ¬Όλ €λ°›κ³ , 좔가적인 νŠΉμ„±μ„ κ°€μ§ˆ 수 μžˆλ‹€. μ—¬κΈ°μ„œ νŠΉμ„±μ΄λž€ ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό λ§ν•œλ‹€. 좔상 클래슀λ₯Ό λ§Œλ“œλŠ” 이유? 1) 싀체 ν΄λž˜μŠ€λ“€μ˜ κ³΅ν†΅λœ ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ 이름을 톡일할 λͺ©μ  2) 싀체 클래슀λ₯Ό μž‘μ„±ν•  λ•Œ μ‹œκ°„μ„ μ ˆμ•½ λΆ€λͺ¨ν΄λž˜μŠ€μ—μ„œ μ •μ˜λ§Œ ν•˜κ³  κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€. μžμ‹ν΄λž˜μŠ€μ—μ„œ ν•¨μˆ˜μž¬μ •μ˜ ν•΄μ€€λ‹€.(λ°˜κ°•μ œ) μΆ”μƒν•¨μˆ˜λ₯Ό ν•˜λ‚˜λΌλ„ 가지고 있으면 μΆ”μƒν΄λž˜μŠ€λ‘œ ν‘œμ‹œν•΄μ•Όν•œ..

KITRI/JAVA 2020. 5. 8. 10:56
Java ν”„λ‘œκ·Έλž˜λ° - 상속(inheritance) / λ©”μ†Œλ“œ μž¬μ •μ˜(μ˜€λ²„λΌμ΄λ”© Overriding)

클래슀의 νŠΉμ§• 3가지 β‘  은닉화 -> public 보닀 privateλ₯Ό μ‚¬μš©ν•œλ‹€. β‘‘ 쀑볡성 -> 쀑볡 (ν•¨μˆ˜μ€‘λ³΅/μƒμ„±μžμ€‘λ³΅) β‘’ 상속성 -> λΆ€λͺ¨ν΄λž˜μŠ€μ˜ 멀버λ₯Ό μžμ‹μ—κ²Œ λ¬Όλ €μ€€λ‹€. μžλ°”μ—μ„œ λ§Œλ“€μ–΄μ§„ λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†λ°›λŠ”λ‹€. μžλ°”λŠ” 닀쀑 상속을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. 즉, μ—¬λŸ¬ 개의 λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό 상속할 수 μ—†μœΌλ―€λ‘œ extends λ’€μ—λŠ” ν•˜λ‚˜μ˜ λΆ€λͺ¨ν΄λž˜μŠ€λ§Œ μ™€μ•Όν•œλ‹€. 상속 : μƒμ†μ΄λž€? 기쑴의 클래슀λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ” 것이닀. 상속을 ν†΅ν•΄μ„œ 클래슀λ₯Ό μž‘μ„±ν•˜λ©΄ 적은 μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•  수 있고 μ½”λ“œλ₯Ό κ³΅ν†΅μ μœΌλ‘œ 관리할 수 있기 λ•Œλ¬Έμ— μ½”λ“œμ˜ μΆ”κ°€ 및 변경이 μš©μ΄ν•˜λ‹€. μ΄λŸ¬ν•œ νŠΉμ§•μ€ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 μ½”λ“œμ˜ 쀑볡을 μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ˜ 생산성과 μœ μ§€λ³΄..

KITRI/JAVA 2020. 5. 7. 10:05
Java ν”„λ‘œκ·Έλž˜λ° - μƒμ„±μž 쀑볡(Overloading), λ‹€λ₯Έ μƒμ„±μž 호좜(this()), μ§€μ •μ˜ˆμ•½μ–΄(static/ final/ static final)

μƒμ„±μž 쀑볡 : λ§€κ°œλ³€μˆ˜λ₯Ό λ‹¬λ¦¬ν•˜λŠ” μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λŠ” 것 λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό 개수 그리고 μ„ μ–Έλœ μˆœμ„œκ°€ λ˜‘κ°™μ„ 경우 λ§€κ°œλ³€μˆ˜ μ΄λ¦„λ§Œ λ°”κΎΌλŠ” 것은 μƒμ„±μž μ˜€λ²„λ‘œλ”©μ΄ μ•„λ‹ˆλ‹€. λ‹€λ₯Έ μƒμ„±μž 호좜(this()) : μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν• λ•ŒλŠ” this() λ₯Ό μ‚¬μš©ν•œλ‹€. μƒμ„±μž μ˜€λ²„λ‘œλ”©μ΄ λ§Žμ•„μ§ˆ 경우 μƒμ„±μž κ°„μ˜ μ€‘λ³΅λœ μ½”λ“œκ°€ λ°œμƒν•  수 μžˆλ‹€. 맀개 λ³€μˆ˜μ˜ 수만 λ‹¬λ¦¬ν•˜κ³  ν•„λ“œ μ΄ˆκΈ°ν™” λ‚΄μš©μ΄ λΉ„μŠ·ν•œ μƒμ„±μžμ—μ„œ μ΄λŸ¬ν•œ ν˜„μƒμ„ λ³Ό 수 μžˆλ‹€. 이 κ²½μš°μ—λŠ” ν•„λ“œ μ΄ˆκΈ°ν™” λ‚΄μš©μ€ ν•œ μƒμ„±μžμ—λ§Œ μ§‘μ€‘μ μœΌλ‘œ μž‘μ„±ν•˜κ³  λ‚˜λ¨Έμ§€ μƒμ„±μžλŠ” μ΄ˆκΈ°ν™” λ‚΄μš©μ„ 가지고 μžˆλŠ” μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” λ°©λ²•μœΌλ‘œ κ°œμ„ ν•  수 μžˆλ‹€. 쀑볡 μ½”λ“œλ₯Ό μ΅œμ†Œν™”ν•œλ‹€. 쑰건 1) λ°˜λ“œμ‹œ μƒμ„±μžμ˜ 첫 μ€„μ—μ„œλ§Œ ν—ˆμš©λœλ‹€. 2) μƒμ„±μžμ˜ μ΄λ¦„μœΌλ‘œ ν΄λž˜μŠ€μ΄λ¦„ λŒ€μ‹ ..

KITRI/JAVA 2020. 5. 6. 16:33
Java ν”„λ‘œκ·Έλž˜λ° - μ ‘κ·Όμ œν•œμž(public, private) / μƒμ„±μž

클래슀의 3λŒ€ νŠΉμ§• 은닉화 ν•¨μˆ˜μ€‘λ³΅ 상속성 private λŠ” λ‚΄ μ†ŒμŠ€ λ°–μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€. ν•¨μˆ˜λŠ” privateλ₯Ό 쓰지 μ•ŠλŠ”λ‹€. λŒ€λΆ€λΆ„ public으둜 μ„ μ–Έν•΄ μ‚¬μš©ν•œλ‹€. λ³€μˆ˜λŠ” private 둜 선언해도 ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. κ·Έλž˜μ„œ λ³€μˆ˜λŠ” privateλ₯Ό μ‚¬μš©ν•œλ‹€. ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” 1개의 μžλ°” 파일둜 μž‘μ„±ν•˜μ§€λ§Œ, μ—¬κΈ°μ„œλŠ” μ„€λͺ…을 νŽΈν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ νŒŒμΌμ— μž‘μ„±ν•΄μ„œ μ‚¬μš©ν•˜κ² λ‹€. ν•˜λ‚˜μ˜ μžλ°” νŒŒμΌμ—μ„œ μ—¬λŸ¬ 개의 클래슀λ₯Ό μž‘μ„±ν•  λ•ŒλŠ” ν•œ 개의 λ©”μΈν΄λž˜μŠ€λ§Œ public으둜 ν•˜κ³ , λ‚˜λ¨Έμ§€λŠ” public선언을 λΉΌμ€˜μ•Όν•œλ‹€. μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•Œμ—λŠ” λ‹€μŒκ³Ό 같이 this() μ½”λ“œλ₯Ό μ‚¬μš©ν•œλ‹€. thisλŠ” μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€. κ·Έλ ‡μ§€λ§Œ 이 κ²½μš°μ—λŠ” λ©€λ²„λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜κ°€ λ™μΌν•œ λ³€μˆ˜λͺ…이기 λ•Œ..

KITRI/JAVA 2020. 4. 29. 16:17
Java ν”„λ‘œκ·Έλž˜λ° - 클래슀(Class)

객체지ν–₯μ–Έμ–΄ 객체지ν–₯이둠의 κΈ°λ³Έ κ°œλ…μ€ 'μ‹€μ œ μ„Έκ³„λŠ” 사물(객체)둜 이루어져 있으며, λ°œμƒν•˜λŠ” λͺ¨λ“  사건듀은 μ‚¬λ¬Όκ°„μ˜ μƒν˜Έμž‘μš©μ΄λ‹€.' λΌλŠ” 것이닀. 객체지ν–₯이둠은 상속, μΊ‘μŠν™”, 좔상화 κ°œλ…μ„ μ€‘μ‹¬μœΌλ‘œ 점차 ꡬ체적으둜 λ°œμ „λ˜μ—ˆλ‹€. 객체지ν–₯μ–Έμ–΄μ˜ κ°€μž₯ 큰 μž₯점은 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ΄ λ†’κ³  μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜λ‹€λŠ” 것이닀. 객체 : κ°μ²΄λž€? 'μ‹€μ œλ‘œ μ‘΄μž¬ν•˜λŠ” 것. 사물 λ˜λŠ” κ°œλ…' 이닀. 객체지ν–₯μ΄λ‘ μ—μ„œ κ°μ²΄λŠ” μœ λ¬΄ν˜• λ‹€ κ°€λŠ₯ν•˜λ‹€. ν”„λ‘œκ·Έλž˜λ°μ—μ„œμ˜ κ°μ²΄λŠ” ν΄λž˜μŠ€μ— μ •μ˜λœ λ‚΄μš©λŒ€λ‘œ λ©”λͺ¨λ¦¬μ— μƒμ„±λœ 것을 λœ»ν•œλ‹€. - 객체의 κ΅¬μ„±μš”μ†Œ (속성과 κΈ°λŠ₯) : κ°μ²΄λŠ” 속성과 κΈ°λŠ₯μ΄λΌλŠ” 두 μ’…λ₯˜μ˜ κ΅¬μ„±μš”μ†Œλ‘œ 이루어져 μžˆλ‹€. 속성(Property) - λ©€λ²„λ³€μˆ˜(member variable), νŠΉμ„±(attribute), ν•„λ“œ(fie..

KITRI/JAVA 2020. 4. 29. 10:25
Java ν”„λ‘œκ·Έλž˜λ° - λ°°μ—΄(Array)

λ°°μ—΄ λ³€μˆ˜λŠ” ν•œ 개의 λ°μ΄ν„°λ§Œ μ €μž₯ν•˜μ§€λ§Œ, 배열은 같은 νƒ€μž…μ˜ 데이터λ₯Ό μ—°μ†λœ 곡간에 μ €μž₯ν•˜λ―€λ‘œ μ†λ„λ©΄μ—μ„œ μ’‹λ‹€. 각 λ°μ΄ν„°λŠ” 인덱슀λ₯Ό λΆ€μ—¬ν•œλ‹€. 배열은 생성 μ‹œ 0으둜 μ΄ˆκΈ°ν™”λœλ‹€. bλŠ” array의 μ£Όμ†Œκ°’μ„ κ°€μ§€κ²Œ λœλ‹€. μ΄λŠ” λ©”λͺ¨λ¦¬ 곡간을 μ ˆμ•½ ν•˜κ²Œ λœλ‹€. ( λ§Œμ•½, μ£Όμ†Œκ°’μ„ μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€ν•΄μ„œ array 20byte + b 20btye = 40byte κ°€ ν•„μš”ν•˜κ²Œ λ˜μ§€λ§Œ bκ°€ μ£Όμ†Œκ°’μ„ 가지면 array 20 byte + b 1byte = 21btye) μ£Όμ†Œκ°’μ„ 가지고 heapμ˜μ—­μ—μ„œ ν•΄λ‹Ή μ£Όμ†Œκ°’μ„ μ°Ύμ•„κ°€μ„œ 값을 κ°€μ Έμ˜¨λ‹€. Cλ‚˜ C++은 가비지 μ»¬λ ‰μ…˜μ΄ μ—†κΈ°λ•Œλ¬Έμ—, κ°œλ°œμžκ°€ λ©”λͺ¨λ¦¬ ν•΄μ œ ν•΄μ€˜μ•Όν•œλ‹€. μ΄λ•Œ, λ§Œμ•½ μ°Έμ‘°ν•˜λ˜ 배열이 μžˆλŠ”λ° μ‹€μˆ˜λ‘œ λ©”λͺ¨λ¦¬ν•΄μ œ 해버린 경우 λ¬Έμ œκ°€ λ°œμƒν•œλ‹€..

KITRI/JAVA 2020. 4. 28. 16:28