[JAVA] 클래슀

2021. 3. 27. 16:03Β·πŸ“ Language/✏ JAVA

클래슀

 

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

κ°μ²΄λž€ 물리적으둜 μ‘΄μž¬ν•˜κ±°λ‚˜ μΆ”μƒμ μœΌλ‘œ 생각할 수 μžˆλŠ” 것 μ€‘μ—μ„œ μžμ‹ μ˜ 속성을 κ°–κ³  μžˆμœΌλ©΄μ„œ 식별 κ°€λŠ₯ν•œ κ²ƒμœΌλ‘œ μ†μ„±κ³Ό λ™μž‘μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ 있고 μžλ°”μ—μ„œλŠ” 각각 ν•„λ“œμ™€ λ©”μ„œλ“œλΌκ³  λΆ€λ₯Έλ‹€.

 

객체듀은 각각 λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜κ³  λ‹€λ₯Έ 객체와 μ„œλ‘œ μƒν˜Έμž‘μš©ν•˜λ©΄μ„œ λ™μž‘ν•˜λŠ”λ° μƒν˜Έμž‘μš© μˆ˜λ‹¨μ€ λ©”μ„œλ“œμ΄λ‹€. κ°μ²΄μ˜ μƒν˜Έμž‘μš©μ€ 객체 κ°„μ˜ λ©”μ„œλ“œ ν˜ΈμΆœμ„ μ˜λ―Έν•˜λ©° 맀개 κ°’κ³Ό 리턴 값을 ν†΅ν•΄μ„œ 데이터λ₯Ό μ£Όκ³ λ°›λŠ”λ‹€.

 

λ©”μ†Œλ“œ 호좜

 

κ°μ²΄λŠ” κ°œλ³„μ μœΌλ‘œ μ‚¬μš©λ  수 μžˆμ§€λ§Œ λŒ€λΆ€λΆ„ λ‹€λ₯Έ 객체와 관계λ₯Ό λ§Ίκ³  μžˆλ‹€.

  • μ§‘ν•© 관계: κ°μ²΄λŠ” ν•˜λ‚˜μ˜ λΆ€ν’ˆμ΄κ³  ν•˜λ‚˜λŠ” μ™„μ„±ν’ˆμ— ν•΄λ‹Ήν•œλ‹€.
  • μ‚¬μš© 관계: 객체 κ°„μ˜ μƒν˜Έμž‘μš©μœΌλ‘œ λ‹€λ₯Έ 객체의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μ–»μ–΄λ‚Έλ‹€.
  • 상속 관계: μƒμœ„(λΆ€λͺ¨) 객체λ₯Ό 기반으둜 ν•˜μœ„(μžμ‹) 객체λ₯Ό μƒμ„±ν•˜λŠ” 관계이닀.

 

객체 κ°„μ˜ 관계

 

2. 클래슀

ν΄λž˜μŠ€μ—λŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν•„λ“œμ™€ λ©”μ„œλ“œκ°€ μ •μ˜λ˜μ–΄ 있고 ν΄λž˜μŠ€λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§„ 객체λ₯Ό ν•΄λ‹Ή 클래슀의 μΈμŠ€ν„΄μŠ€λΌκ³  λΆ€λ₯Έλ‹€.

 

ν΄λž˜μŠ€λŠ” 라이브러리(API), μ‹€ν–‰ 2κ°€μ§€μ˜ μš©λ„κ°€ μžˆλ‹€. λΌμ΄λΈŒλŸ¬λ¦¬ ν΄λž˜μŠ€λŠ” λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ μ΄μš©ν•  λͺ©μ μœΌλ‘œ μ„€κ³„λœλ‹€. ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λŠ” ν΄λž˜μŠ€κ°€ 100개라면 99κ°œλŠ” 라이브러리 클래슀이고 단 ν•˜λ‚˜κ°€ μ‹€ν–‰ ν΄λž˜μŠ€μ΄λ‹€. μ‹€ν–‰ ν΄λž˜μŠ€λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μ§„μž…μ μΈ main() λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•˜λŠ” 역할을 ν•œλ‹€.

 

클래슀 ꡬ성 멀버

 

  • ν•„λ“œ: 객체의 고유 데이터, λΆ€ν’ˆ 객체, μƒνƒœ 정보λ₯Ό μ €μž₯ν•œλ‹€. μ„ μ–Έ ν˜•νƒœλŠ” λ³€μˆ˜μ™€ λΉ„μŠ·ν•˜μ§€λ§Œ λ³€μˆ˜λŠ” μƒμ„±μžμ™€ λ©”μ„œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜κ³  μƒμ„±μžμ™€ λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ†Œλ©Έλœλ‹€. ν•˜μ§€λ§Œ ν•„λ“œλŠ” μƒμ„±μžμ™€ λ©”μ„œλ“œ μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λ©° 객체가 μ†Œλ©Έλ˜μ§€ μ•ŠλŠ” ν•œ 객체와 ν•¨κ»˜ μ‘΄μž¬ν•œλ‹€.
  • μƒμ„±μž: new μ—°μ‚°μžλ‘œ ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ λ©”μ„œλ“œλ‘œ 객체 생성 μ‹œ μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•œλ‹€. λ©”μ„œλ“œμ™€ λΉ„μŠ·ν•˜κ²Œ μƒκ²Όμ§€λ§Œ, 클래슀 μ΄λ¦„μœΌλ‘œ λ˜μ–΄ 있고 리턴 νƒ€μž…μ΄ μ—†λ‹€.
    • λͺ¨λ“  ν΄λž˜μŠ€λŠ” μƒμ„±μžκ°€ λ°˜λ“œμ‹œ μ‘΄μž¬ν•œλ‹€.
    • μƒμ„±μž μ˜€λ²„λ‘œλ”©μœΌλ‘œ μƒμ„±μžλ₯Ό ν•˜λ‚˜ 이상 κ°€μ§ˆ 수 μžˆλ‹€.
    • μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•Œμ—λŠ” this()λ₯Ό μ‚¬μš©ν•œλ‹€.
    • 클래슀 내뢀에 μƒμ„±μž 선언을 μƒλž΅ν–ˆλ‹€λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό λ°”μ΄νŠΈ μ½”λ“œμ— μžλ™ μΆ”κ°€ν•œλ‹€.
    • ν΄λž˜μŠ€μ— λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•œ μƒμ„±μžκ°€ μžˆλ‹€λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” κΈ°λ³Έ μƒμ„±μžμ˜ μ ‘κ·Ό μ œν•œμ€ 클래슀의 μ ‘κ·Ό μ œν•œκ³Ό λ™μΌν•˜λ‹€.
  • λ©”μ„œλ“œ:객체의 λ™μž‘에 ν•΄λ‹Ήλ˜λŠ” κ²ƒμœΌλ‘œ ν•„λ“œλ₯Ό 읽고 μˆ˜μ •ν•˜λŠ” 역할도 ν•˜μ§€λ§Œ λ‹€λ₯Έ 객체λ₯Ό μƒμ„±ν•΄μ„œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ°λ„ ν•œλ‹€.

 

3. μΈμŠ€ν„΄μŠ€ 멀버와 정적 멀버

μΈμŠ€ν„΄μŠ€ λ©€λ²„λŠ” κ°μ²΄λ§ˆλ‹€ κ°–κ³  μžˆλŠ” 멀버이고 μ •적 λ©€λ²„λŠ” ν΄λž˜μŠ€μ— μœ„μΉ˜μ‹œν‚€κ³  객체듀이 κ³΅μœ ν•˜λŠ” 멀버이닀.

  • κ°μ²΄λ§ˆλ‹€ κ°–κ³  μžˆμ–΄μ•Ό ν•  데이터라면 μΈμŠ€ν„΄μŠ€ ν•„λ“œλ‘œ μ„ μ–Έν•˜κ³  곡용 데이터라면 정적 ν•„λ“œλ‘œ μ„ μ–Έν•œλ‹€.
  • μΈμŠ€ν„΄μŠ€ ν•„λ“œλ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ‘œ μ„ μ–Έν•˜κ³  κ·Έλ ‡μ§€ μ•Šλ‹€λ©΄ 정적 λ©”μ„œλ“œλ‘œ μ„ μ–Έν•œλ‹€.

 

1) μΈμŠ€ν„΄μŠ€ 멀버

μΈμŠ€ν„΄μŠ€ λ©€λ²„λŠ” 객체λ₯Ό μƒμ„±ν•œ ν›„ μ‚¬μš©ν•  수 μžˆλŠ” ν•„λ“œμ™€ λ©”μ„œλ“œλ‘œ μΈμŠ€ν„΄μŠ€ ν•„λ“œλŠ” κ°μ²΄λ§ˆλ‹€ λ”°λ‘œ μ‘΄μž¬ν•˜κ³  μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” λ©”μ„œλ“œ μ˜μ—­μ— μ €μž₯되고 κ³΅μœ λœλ‹€.

 

μΈμŠ€ν„΄μŠ€ 멀버

 

2) 정적 멀버

정적(Static) λ©€λ²„λŠ” ν΄λž˜μŠ€μ— κ³ μ •λœ λ©€λ²„λ‘œμ„œ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλŠ” ν•„λ“œμ™€ λ©”μ„œλ“œμ΄λ‹€. μ •적 ν•„λ“œμ™€ 정적 λ©”μ„œλ“œλŠ” 클래슀 λ‘œλ”κ°€ 클래슀(λ°”μ΄νŠΈ μ½”λ“œ)λ₯Ό λ‘œλ”©ν•΄μ„œ λ©”μ„œλ“œ μ˜μ—­μ— μ μž¬ν•  λ•Œ ν΄λž˜μŠ€λ³„λ‘œ κ΄€λ¦¬λœλ‹€.

  • 내뢀에 μΈμŠ€ν„΄μŠ€ ν•„λ“œλ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ— μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ 객체λ₯Ό λ¨Όμ € μƒμ„±ν•˜κ³  μ°Έμ‘° λ³€μˆ˜λ‘œ μ ‘κ·Όν•΄μ•Ό ν•œλ‹€.
  • main() λ©”μ„œλ“œλ„ λ™μΌν•œ κ·œμΉ™μ΄ μ μš©λœλ‹€.

 

3) final ν•„λ“œ

μ΄ˆκΈ°κ°’μ΄ μ €μž₯되면 이것이 μ΅œμ’…μ μΈ 값이 λ˜μ–΄ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 μˆ˜μ •ν•  수 μ—†λ‹€.

 

4) μƒμˆ˜

λΆˆλ³€μ˜ κ°’μœΌλ‘œ κ°μ²΄λ§ˆλ‹€ μ‘΄μž¬ν•˜μ§€ μ•Šκ³  ν΄λž˜μŠ€μ—λ§Œ μ‘΄μž¬ν•˜κ³  static final ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œλ‹€.

 

4. νŒ¨ν‚€μ§€μ™€ μ ‘κ·Ό μ œν•œμž

1) νŒ¨ν‚€μ§€

μžλ°”μ—μ„œλŠ” 클래슀λ₯Ό μ²΄κ³„μ μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•œλ‹€. νŒ¨ν‚€μ§€μ˜ 물리적인 ν˜•νƒœλŠ” 파일 μ‹œμŠ€ν…œμ˜ 폴더인데 λ‹¨μˆœνžˆ 폴더 κΈ°λŠ₯만 ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 클래슀의 μΌλΆ€λΆ„μœΌλ‘œ 클래슀λ₯Ό μœ μΌν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” μ‹λ³„μž 역할을 ν•œλ‹€. ν΄λž˜μŠ€ 이름이 λ™μΌν•˜λ”λΌλ„ νŒ¨ν‚€μ§€κ°€ λ‹€λ₯΄λ©΄ λ‹€λ₯Έ 클래슀둜 μΈμ‹ν•œλ‹€.

 

클래슀λ₯Ό μž‘μ„±ν•  λ•Œ ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ–΄λ–€ νŒ¨ν‚€μ§€μ— 속할 것인지λ₯Ό μ„ μ–Έν•œλ‹€.

package μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€;

public class ClassName {}

 

λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μ†Œμ†λ˜μ–΄ μžˆλŠ” ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ import 문으둜 μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

import μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€.ν΄λž˜μŠ€μ΄λ¦„;
import μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€.*;

 

2) μ ‘κ·Ό μ œν•œμž

μ ‘κ·Ό μ œν•œμžλŠ” μ„Έ κ°€μ§€ μ’…λ₯˜κ°€ 있고 μ ‘κ·Ό μ œν•œμžκ°€ μ μš©λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ default μ ‘κ·Ό μ œν•œμ„ κ°€μ§„λ‹€.

  • public: μ™ΈλΆ€ ν΄λž˜μŠ€κ°€ 자유둭게 μ‚¬μš©ν•  수 μžˆλ‹€.
  • protected: 같은 νŒ¨ν‚€μ§€ λ˜λŠ” μžμ‹ ν΄λž˜μŠ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • private: μ™ΈλΆ€μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.
  • default: 같은 νŒ¨ν‚€μ§€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€.
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Language/✏ JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [JAVA] 쀑첩 ν΄λž˜μŠ€μ™€ 쀑첩 μΈν„°νŽ˜μ΄μŠ€
  • [JAVA] 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€
  • [JAVA] 상속
  • [JAVA] κΈ°λ³Έν˜• λ³€μˆ˜μ™€ μ°Έμ‘°ν˜• λ³€μˆ˜
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[JAVA] 클래슀
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”