πŸ§€Programming/Java

[Java] ν”„λ‘œκ·Έλž˜λ° 기초 - Java의 νŠΉμ§•κ³Ό 객체 μ§€ν–₯

Nsso 2023. 5. 25. 15:02

πŸ§€ μžλ°” ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§•


1.  객체 μ§€ν–₯ μ–Έμ–΄ν”„λ‘œκ·Έλž˜λ° (OOP)

=> μœ μ§€λ³΄μˆ˜κ°€ 쉽고 ν™•μž₯성이 μ’‹μŒ

 

2.  μžλ™ λ©”λͺ¨λ¦¬ 관리

=> JavaλŠ” κ°œλ°œμžκ°€ 직접 λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•  수 μ—†μœΌλ©° Garbage Collectorλ₯Ό 톡해 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬λ₯Ό μžλ™μœΌλ‘œ μ²˜λ¦¬ν•΄ 쀌 

 

3.  μš΄μ˜μ²΄μ œμ— 독립적 

=> JavaλŠ” JVM(Java Virtual Machine) μœ„μ—μ„œ λŒμ•„κ°€κΈ° λ•Œλ¬Έμ— μ–΄λ–€ μš΄μ˜μ²΄μ œλ“  상관없이 λ…λ¦½μ μœΌλ‘œ 싀행이 κ°€λŠ₯함

 

4. ν’λΆ€ν•œ κΈ°λŠ₯이 μ œκ³΅λ˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리

 

5. λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ° 지원

=> ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ΄ λ™μΌν•œ μ“°λ ˆλ“œλ₯Ό λ™μ‹œμ— μˆ˜ν–‰ν•  수 있음

 

6. μ•ˆμ „ν•˜κ³  κ°•λ ₯함

=> λ©”λͺ¨λ¦¬ 접근을 μžλ°”μ˜ μ‹œμŠ€ν…œμ—μ„œ 관리해 ν”„λ‘œκ·Έλž¨μ΄ μ•ˆμ •μ μ΄κΈ° λ•Œλ¬Έμ— μ‹œμŠ€ν…œ λΆ•κ΄΄(ν”„λ‘œκ·Έλž¨μ˜ 비정상적 μ’…λ£Œ)의 μš°λ €κ°€ μ—†μŒ

 

더보기

🧐 ν”„λ‘œκ·Έλž˜λ°μ΄λž€?  => 컴퓨터가 일을 μˆ˜ν–‰ν•˜λ„λ‘ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 일 

🧐 JVM(μžλ°” 가상 λ¨Έμ‹ )의 ꡬ동 방식  =>  JVMμ—μ„œ λ³„λ„μ˜ 컴파일러λ₯Ό 톡해 μ»΄νŒŒμΌμ„ ν•˜κ²Œ 되면 byte (Class 파일의 ν˜•νƒœ) μ½”λ“œλ‘œ λ³€ν™˜λ˜κ³  λͺ…λ Ήμ–΄(.exe)κ°€ 왔을 λ•Œ JVM이 λ°”μ΄νŠΈ μ½”λ“œλ₯Ό κ°€μ Έκ°€ ν•΄λ‹Ή 운영체제 맞게 μ»΄νŒŒμΌν•΄ μ‹€ν–‰ κ°€λŠ₯ν•˜λ„λ‘ 함

 

 

 

πŸ§€ κ°μ²΄ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€


1.  ν”„λ‘œκ·Έλž¨μ˜ λŒ€μƒμΈ 객체듀을 μ •μ˜ν•΄μ„œ κ·Έ κ°μ²΄λ“€μ˜ λ©”μ„œλ“œ κΈ°λŠ₯을 μ •μ˜ν•˜κ³  객체 κ°„μ˜ ν˜‘λ ₯을 기반으둜 ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λŠ” 것 

 

 

1.1  객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§•

1) μƒμ†(Inheritance) : κΈ°μ‘΄ 클래슀(λΆ€λͺ¨)λ₯Ό ν™•μž₯ν•΄μ„œ μƒˆλ‘œμš΄ 클래슀(μžμ‹)λ₯Ό λ§Œλ“œλŠ” κΈ°λŠ₯

2) μΆ”상화(Abstraction) : μžλ°”μ—μ„œ κ³΅ν†΅λœ 속성, κΈ°λŠ₯을 λ¬Άμ–΄ 이름을 λΆ™μ΄λŠ” 것을 μ˜λ―Έν•˜λ©° μΆ”μƒν΄λž˜μŠ€, μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 κ΅¬ν˜„ν•¨ 

3) λ‹€ν˜•μ„±(Polymorphism) : ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλŠ” 것을 μ˜λ―Έν•˜λ©° μ˜€λ²„λ‘œλ”©, μ˜€λ²„λΌμ΄λ”© λ“±μ˜ 방법이 있음

4) μΊ‘μŠν™”(Encapsulation) : μ™ΈλΆ€μ—μ„œ μ‰½κ²Œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 κ΄€λ ¨λœ κΈ°λŠ₯κ³Ό 데이터λ₯Ό ν•˜λ‚˜μ˜ Class둜 λ¬Άμ–΄μ„œ μ‚¬μš©ν•˜λŠ” 법 (정보 은닉)

 

 

1.2  객체 μ§€ν–₯의 μž₯점

-  μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ΄ λ†’μŒ

- μœ μ§€λ³΄μˆ˜μ— μš©μ΄ν•¨

- μ‹ λ’°μ„± 높은 ν”„λ‘œκ·Έλž¨ κ΅¬ν˜„ κ°€λŠ₯

- λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— 적합함

- 디버깅이 쉬움

 

 

1.3  객체 μ§€ν–₯의 단점

- μ ˆμ°¨μ§€ν–₯에 λΉ„ν•΄ μ‹€ν–‰ 속도가 느림

- 섀계에 λ§Žμ€ μ‹œκ°„μ΄ μ†Œμš”λ¨

 

 

 

πŸ§€ μžλ°” κ΅¬μ„± μš”μ†Œ 


1) ν΄λž˜μŠ€(Class)

=> 객체λ₯Ό μ •μ˜ν•˜λŠ” 섀계도(ν‹€) 

=> 객체의 속성을 μ •μ˜ν•˜κ³ , κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ—¬ λ§Œλ“€μ–΄ 놓은 μ½”λ“œ μƒνƒœ

 

2) λ©”μ„œλ“œ(Method)

=> 객체의 λ™μž‘ 및 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 클래슀 내뢀에 κ΅¬ν˜„λ˜λŠ” ν•¨μˆ˜

=> 멀버 ν•¨μˆ˜λΌκ³ λ„ 뢈림

=> λ©”μ„œλ“œ λͺ…은 μ‚¬μš©ν•˜λŠ” 객체(ν΄λΌμ΄μ–ΈνŠΈ)에 맞게 μ§“λŠ” 것이 μ’‹μŒ

 

3) ν•„λ“œ(Field) 

=> 객체의 데이터가 μ €μž₯λ˜λŠ” κ³³