λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Study/Java91

[TIL] λ‹€ν˜•μ„± πŸ”Ž OOP의 4λŒ€ νŠΉμ§• πŸ™πŸ» λ‹€ν˜•μ„± Polymorphism - ν•˜λ‚˜μ˜ νƒ€μž… λ³€μˆ˜λ‘œ μ—¬λŸ¬ 객체λ₯Ό μ°Έμ‘° ν•  수 있음 - μƒμœ„ν΄λž˜μŠ€ νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ ν•˜μœ„ν΄λž˜μŠ€ 객체λ₯Ό μ°Έμ‘° - ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ κ°€μ§€ ν˜•νƒœλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” 것 - μ½”λ“œ 쀑볡을 쀄여 νŽΈλ¦¬ν•˜κ³  효과적으둜 ν”„λ‘œκ·Έλž˜λ° κ°€λŠ₯ - Poly : μ—¬λŸ¬ 개 - morphism : ν˜•νƒœ / 싀체 - μ°Έμ‘°λ³€μˆ˜κ°€ μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„μ˜ κ°œμˆ˜λŠ” μ‹€μ œ 객체의 멀버 κ°œμˆ˜λ³΄λ‹€ κ°™κ±°λ‚˜ 적어야 함 - μƒμœ„ 클래슀의 μ°Έμ‘° λ³€μˆ˜λ‘œ ν•˜μœ„ 클래슀의 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” 것 ( Friendκ°€ GirFriendλ₯Ό μ°Έμ‘°ν•˜λŠ” κ°œλ… ) - λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© 및 μ˜€λ²„λ‘œλ”©λ„ λ‹€ν˜•μ„±μ˜ 예 πŸ“ μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž… λ³€ν™˜ - κΈ°λ³Έ μžλ£Œν˜•μ˜ ν˜•λ³€ν™˜ 처럼 μ°Έμ‘° λ³€μˆ˜λ„ νƒ€μž… λ³€ν™˜ κ°€λŠ₯ ! → μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„μ˜.. 2022. 5. 15.
[TIL] 좔상화 πŸ”Ž OOP의 4λŒ€ νŠΉμ§• πŸ‘πŸ» 좔상화 Abstraction - 객체의 곡톡적인 속성과 κΈ°λŠ₯을 μΆ”μΆœν•˜μ—¬ κ³΅ν†΅μ˜ 쑰상을 λ§Œλ“œλŠ” 것 - κΈ°μ‘΄ ν΄λž˜μŠ€λ“€μ˜ 곡톡적인 μš”μ†Œλ“€μ„ μΆ”μΆœν•˜μ—¬ μƒμœ„ 클래슀λ₯Ό λ§Œλ“€μ–΄ 냄 → 곡톡 속성과 κΈ°λŠ₯을 μ •μ˜ν•˜κ³  ν•˜μœ„ν΄λž˜μŠ€ 생성 κ°€λŠ₯ → ν•˜μœ„ ν΄λž˜μŠ€λ“€μ˜ 곡톡성을 λͺ¨μ•„ μƒμœ„ 클래슀 μ •μ˜ κ°€λŠ₯ πŸ“ abstract μ œμ–΄μž - abstract : λ―Έμ™„μ„±, 좔상적인 abstract class Example{ //좔상 클래슀 abstract void start(); //좔상 λ©”μ†Œλ“œ } πŸ“ 좔상 λ©”μ„œλ“œ abstract void stop(); - λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ§Œ 있고 λ°”λ””λŠ” μ—†λŠ” λ©”μ„œλ“œ πŸ“ 좔상 클래슀 - λ―Έμ™„μ„± λ©”μ„œλ“œ(좔상 λ©”μ„œλ“œ)λ₯Ό ν¬ν•¨ν•˜λŠ” 클래슀이자 λ―Έμ™„μ„± 섀계도 - λ―Έμ™„μ„± ꡬ쑰λ₯Ό κ°€μ§€κ³  있기 .. 2022. 5. 15.
[TIL] μ»¬λ ‰μ…˜ Collection ☝🏻 μ œλ„€λ¦­ Generic - 데이터 ν˜•μ‹μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  ν•˜λ‚˜μ˜ 값이 μ—¬λŸ¬ νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλ„λ‘ ν•˜λŠ” 방법 - 클래슀 λ‚΄λΆ€μ—μ„œ μ§€μ •ν•˜λŠ” 것이 μ•„λ‹Œ μ™ΈλΆ€μ—μ„œ μ‚¬μš©μžμ— μ˜ν•΄ μ§€μ •λ˜λŠ” 것 - 클래슀, λ©”μ†Œλ“œμ—μ„œ μ‚¬μš©ν•  데이터 νƒ€μž…μ„ λ‚˜μ€‘μ— ν™•μ •ν•˜λŠ” 기법 → 확정은 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œλ‚˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ 정함 - 클래슀λ₯Ό μ„ μ–Έν•˜μ—¬ 객체λ₯Ό 생성할 λ•Œ ꡬ체적인 νƒ€μž… 기재 = 즉, main μ—μ„œ 객체 λ§Œλ“€λ•Œ !! - νƒ€μž…μ„ μ–΄λ–€ 클래슀 μ’…λ₯˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ λ³΄λŠ” 것 μ–΄λ–€ 자료ꡬ쑰λ₯Ό λ§Œλ“€μ–΄ λ°°ν¬ν•˜κ³ μž ν•  λ•Œ String νƒ€μž…λ„, Integer νƒ€μž…λ„ μ§€μ›ν•˜κ³  μ‹Άλ‹€λ©΄ 각 각 ν΄λž˜μŠ€λ§ˆλ‹€ ν•˜λ‚˜μ”© νƒ€μž…μ„ λ§Œλ“€μ§€ μ•Šκ³  μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λŠ” 것 !! public class 클래슀λͺ… { ... } public interface 인.. 2022. 5. 15.
[TIL] μ°Έμ‘°λ³€μˆ˜μ™€ μ°Έμ‘°νƒ€μž… πŸ‘πŸ» μžλ°”μ˜ νƒ€μž… String A = "abc"; → String이 μ°Έμ‘° νƒ€μž…, Aκ°€ μ°Έμ‘° λ³€μˆ˜ πŸ‘‰πŸ» κΈ°λ³Έ νƒ€μž… int number = 123; - μ‹€μ œ 값을 λ³€μˆ˜μ— μ €μž₯ - μ •μˆ˜ νƒ€μž…, μ‹€μˆ˜ νƒ€μž…, 논리 νƒ€μž… πŸ‘‰πŸ» μ°Έμ‘° νƒ€μž… String str = "ABC"; - λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œ 값을 λ³€μˆ˜μ— μ €μž₯ - λ°°μ—΄ νƒ€μž…, μ—΄κ±° νƒ€μž…, 클래슀, μΈν„°νŽ˜μ΄μŠ€ πŸ“ λ©”μ†Œλ“œ μ˜μ—­ = 정적 ν•„λ“œ, λ©”μ†Œλ“œ, μƒμ„±μž μ½”λ“œ - JVM이 μ‹œμž‘ν•  λ•Œ μƒμ„±λ˜κ³  λͺ¨λ“  μŠ€λ ˆλ“œκ°€ κ³΅μœ ν•˜λŠ” μ˜μ—­ - 정적 ν•„λ“œμ™€ μƒμˆ˜, λ©”μ„œλ“œ μ½”λ“œ, μƒμ„±μž μ½”λ“œ 등을 λΆ„λ₯˜ν•΄μ„œ μ €μž₯ πŸ“ νž™ μ˜μ—­ = 객체 생성 - 객체와 배열이 μƒμ„±λ˜λŠ” μ˜μ—­ - μƒμ„±λœ 객체와 κ·Έ μ£Όμ†Œκ°’μ΄ μ €μž₯됨 ( λ©”λͺ¨λ¦¬ μ£Όμ†Œ κ°’ - 객체 ) - μŠ€νƒ μ˜μ—­μ˜ λ³€μˆ˜λ‚˜ λ‹€λ₯Έ 객체의 ν•„λ“œμ—μ„œ μ°Έμ‘° →.. 2022. 5. 14.
[TIL] 상속 πŸ”Ž OOP의 4λŒ€ νŠΉμ§• πŸ™ŒπŸ» 상속 - 기쑴의 클래슀λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ” 것 - 두 클래슀λ₯Ό λΆ€λͺ¨μ™€ μžμ‹μœΌλ‘œ 관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” κ²ƒμœΌλ‘œ μžμ‹μ€ λΆ€λͺ¨μ˜ λͺ¨λ“  멀버λ₯Ό μƒμ†λ°›μŒ - μƒμœ„ 클래슀의 멀버인 ν•„λ“œ, λ©”μ„œλ“œ, μ΄λ„ˆν΄λž˜μŠ€λ₯Ό ν•˜μœ„ 클래슀둜 보냄 πŸ’‘ 상속을 μ‚¬μš©ν•˜λŠ” 이유? - μ½”λ“œλ₯Ό μž¬μ‚¬μš© ν•˜μ—¬ 적은 μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•  수 있음 - μ½”λ“œ 쀑볡 제거 κ°€λŠ₯ - ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ λͺ¨μ–‘μœΌλ‘œ ν‘œν˜„λ  수 μžˆλ‹€λŠ” λ‹€ν˜•μ„± ν‘œν˜„ κ°€λŠ₯ πŸ“ 상속 μ‚¬μš© : extends 클래슀λͺ… extends μƒμœ„ν΄λž˜μŠ€λͺ… - μƒμœ„ 클래슀의 ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό ν•˜μœ„ ν΄λž˜μŠ€κ°€ 상속 → κ³΅ν†΅λœ 속성과 κΈ°λŠ₯을 각각 μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ 됨 - ν•˜μœ„ 클래슀 ν•„λ“œ = μƒμœ„ 클래슀 ν•„λ“œ + ν•˜μœ„ 클래슀의 μƒˆλ‘œμš΄ ν•„λ“œ - ν•˜μœ„ 클래슀 .. 2022. 5. 12.
[TIL] μΊ‘μŠν™” πŸ”Ž OOP의 4λŒ€ νŠΉμ§• ☝🏻 μΊ‘μŠν™” Encapsulation - 객체의 속성과 ν–‰μœ„λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άκ³  μ‹€μ œ κ΅¬ν˜„ λ‚΄μš© 일뢀λ₯Ό 외뢀에 감좔어 은닉함 - 데이터 보호 및 λΆˆν•„μš”ν•œ 데이터 μ™ΈλΆ€ λ…ΈμΆœ λ°©μ§€ - 정보 은닉 및 독립성 (데이터 λ³€κ²½λ˜μ–΄λ„ 타 객체에 영ν–₯ x) 및 μœ μ§€λ³΄μˆ˜ 용이 ✌🏻 νŒ¨ν‚€μ§€ Package - ν•˜λ‚˜μ˜ 디렉토리에 νŠΉμ •ν•œ λͺ©μ μ„ κ³΅μœ ν•˜λŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ 묢음 - νŒŒμΌλ“€μ„ 폴더에 λ‹΄μ•„ λ†“λŠ” 것과 λΉ„μŠ·ν•œ κ°œλ… - 계측ꡬ쑰λ₯Ό κ°€μ§€λ©° 점(.)으둜 ꡬ뢄 - νŒ¨ν‚€μ§€κ°€ μžˆλŠ” 경우 μ½”λ“œμ˜ 첫 쀄은 λ°˜λ“œμ‹œ 'package νŒ¨ν‚€μ§€λͺ…' 으둜 ν‘œμ‹œ - 같은 클래슀의 이름을 κ°€μ§€κ³  μžˆλ”λΌλ„ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— ν¬ν•¨λ˜μ–΄ 있으면 ν˜‘μ—… μ‹œ 좩돌 λ°©μ§€ πŸ’‘ λŒ€ν‘œμ μΈ νŒ¨ν‚€μ§€ β–ͺ️ java.lang - μžλ°”μ˜ κΈ°λ³Έ ν΄λž˜μŠ€λ“€μ„ λͺ¨.. 2022. 5. 12.
[TIL] OOP μƒμ„±μž 🐻 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° 기초 ☝🏻 μƒμ„±μž Constructor - 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ œμ–΄μž - 객체λ₯Ό μƒμ„±ν•˜λŠ” 역할을 ν•˜λŠ” 클래슀의 κ΅¬μ„±μš”μ†Œ - μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ ν˜ΈμΆœλ˜λŠ” μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λ©”μ„œλ“œ - new ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 객체λ₯Ό 생성할 λ•Œ ν˜ΈμΆœλ˜λŠ” 것 - μΈμŠ€ν„΄μŠ€ 생성을 λ‹΄λ‹Ήν•˜λŠ” 것은 new ν‚€μ›Œλ“œ μƒμ„±μžλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ“€μ„ μ΄ˆκΈ°ν™”ν•˜λŠ”λ° μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ 클래슀λͺ…(λ§€κ°œλ³€μˆ˜) { ... } πŸͺ΄ μƒμ„±μžμ˜ 흐름 - 클래슀λ₯Ό κ°€μ§€κ³  객체λ₯Ό μƒμ„±ν•˜λ©΄ ν•΄λ‹Ή κ°μ²΄λŠ” λ©”λͺ¨λ¦¬μ— μ¦‰μ‹œ 생성됨 → μ΄λ ‡κ²Œ μƒμ„±λœ κ°μ²΄λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ 아직 μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠλŠ” μƒνƒœ (즉, 0μ΄λ‚˜ null λ“±μ˜ 값을 가짐) → 객체의 생성과 λ™μ‹œμ— μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ›ν•˜λŠ” κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  수 μžˆλŠ” 생.. 2022. 5. 11.
[Java] OOP ν•„λ“œμ™€ λ©”μ„œλ“œ μ•ˆλ…•ν•˜μ„Έμš” λ°±μ—”λ“œ 개발자 ν™λ―Όμ •μž…λ‹ˆλ‹€ :) μ˜€λŠ˜μ€ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ ν•„λ“œμ™€ λ©”μ„œλ“œμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€ ! ☝🏻 ν•„λ“œ (Field) λž€? 클래슀 μ•ˆμ—μ„œ λ…λ¦½μ μœΌλ‘œ μ„ μ–Έλ˜λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 클래슀λ₯Ό κ΅¬μ„±ν•˜λŠ” μš”μ†Œ 쀑 ν•˜λ‚˜μΈ λ©€λ²„λ³€μˆ˜ 쀑 ν•˜λ‚˜μΈλ°μš”, 클래슀 λ‚΄ μ „μ—­μ—μ„œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ „μ—­λ³€μˆ˜λΌκ³ λ„ ν•©λ‹ˆλ‹€. 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ 역할을 λ‹΄λ‹Ήν•˜λ©° μƒμ„±μžμ™€ λ©”μ†Œλ“œ λ°–μ—μ„œ μ„ μ–Έλ˜κ³  μ‚¬μš©ν•˜λ©° 객체의 고유 데이터, 객체가 κ°€μ Έμ•Ό ν•  λΆ€λΆ„, 객체의 ν˜„μž¬ μƒνƒœ λ“± μ €μž₯ν•˜λŠ” 것이 ν•„λ“œμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν•„λ“œμ˜ νŠΉμ§•μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸ“ ν•„λ“œμ˜ νŠΉμ§• - κΈ°λ³Έ 값이 μžλ™μœΌλ‘œ μ΄ˆκΈ°ν™” 됨 - ν•΄λ‹Ή 클래슀 λ‚΄ λͺ¨λ“  λ©”μ†Œλ“œμ— μ ‘κ·Ό κ°€λŠ₯ - 객체가 생성될 λ•Œ ν•¨κ»˜ μƒμ„±λ˜λ©° μƒμ„±λœ 객체λ₯Ό 더 이상 μ°Έμ‘°ν•˜μ§€ μ•Šμ„ λ•Œ GC에 의.. 2022. 5. 10.
[Java] OOP ν΄λž˜μŠ€μ™€ 객체 μ•ˆλ…•ν•˜μ„Έμš” λ°±μ—”λ“œκ°œλ°œμž ν™λ―Όμ •μž…λ‹ˆλ‹€. μ˜€λŠ˜μ€ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄μ„œ μ„€λͺ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€ ~~~🐰 ☝🏻 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP, Object Oriented Programming) μ΄λž€? 컴퓨터 ν”„λ‘œκ·Έλž¨μ„ κ°μ²΄λΌλŠ” κΈ°λ³Έ λ‹¨μœ„λ‘œ λ‚˜λˆ„κ³  각 객체가 λ©”μ‹œμ§€λ₯Ό μ£Όκ³ λ°›μ•„ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΉ„μ ˆμ°¨μ  ν”„λ‘œκ·Έλž˜λ°μž…λ‹ˆλ‹€. 즉, ν•„μš”ν•œ 데이터λ₯Ό ν•œ 데 λͺ¨μ•„ μΆ”μƒν™”μ‹œμΌœ μƒνƒœμ™€ ν–‰μœ„λ₯Ό κ°€μ§„ 객체λ₯Ό λ§Œλ“€κ³  κ·Έ 객체 κ°„ 유기적 μƒν˜Έμž‘μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μ‹€μ œ μ‚¬λ¬Όμ˜ 속성과 κΈ°λŠ₯을 λΆ„μ„ν•œ 후에 ν”„λ‘œκ·Έλž˜λ° λ³€μˆ˜μ™€ ν•¨μˆ˜λ‘œ μ •μ˜ν•˜λ©° μ‹€ 세계λ₯Ό λ°˜μ˜ν•©λ‹ˆλ‹€. μ΄λŠ” μœ μ—°ν•˜κ³  변경이 μ‰½μŠ΅λ‹ˆλ‹€. 결과적으둜 ν”„λ‘œκ·Έλž¨ 개발 및 μœ μ§€λ³΄μˆ˜μ— λ“œλŠ” λΉ„μš©κ³Ό μ‹œκ°„μ„ 획기적으둜 쀄일 수 있으며 객체λ₯Ό 톡해 데이터λ₯Ό κ΄€λ¦¬ν•˜μ—¬ 데이터λ₯Ό 손싀 없이 κ΄€λ¦¬ν•˜κΈ° μš©μ΄ν•©λ‹ˆ.. 2022. 5. 10.