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

[JAVA] ν•„λ“œμ™€ λ©”μ„œλ“œ

by Bhinney 2022. 12. 26.

πŸ”Ž ν•„λ“œ

ν•„λ“œλž€?
  • ν΄λž˜μŠ€μ— ν¬ν•¨λœ λ³€μˆ˜
  • 속성을 μ •μ˜ν•  λ•Œ μ‚¬μš©
ꡬ뢄
  • 클래슀 λ³€μˆ˜ (Class Variable)
  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ (Instance Variable)
  • 지역 λ³€μˆ˜ (Local Variable)
class Variables{ /* 클래슀 μ˜μ—­ */
    int iv; /* μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ */
    static cv; /* 클래슀 λ³€μˆ˜ */

    void method() { /* λ©”μ„œλ“œ μ˜μ—­ */
        int lv = 0; /* 지역 λ³€μˆ˜ */
    }
}

 

λ³€μˆ˜ μ’…λ₯˜ μ„ μ–Έ μœ„μΉ˜ 생성 μ‹œκΈ°
클래슀 λ³€μˆ˜ 클래슀 μ˜μ—­ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ
μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ—ˆμ„ λ•Œ
지역 λ³€μˆ˜ 클래슀 μ˜μ—­ μ΄μ™Έμ˜ μ˜μ—­
(λ©”μ„œλ“œ, μƒμ„±μž, μ΄ˆκΈ°ν™” λΈ”λŸ­ λ‚΄λΆ€)
λ³€μˆ˜ 선언문이 μˆ˜ν–‰λ˜μ—ˆμ„ λ•Œ

1️⃣ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ (Instance Variable)

: 클래슀 μ˜μ—­μ— μ„ μ–Έλ˜λ©°, μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ λ§Œλ“€μ–΄μ§„λ‹€. λ”°λΌμ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ 값을 μ½μ–΄μ˜€κ±°λ‚˜ μ €μž₯ν•˜λ €λ©΄, λ¨Όμ € μΈμŠ€ν„΄μŠ€λ₯Ό 생성해야 ν•œλ‹€. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ³„λ„μ˜ μ €μž₯곡간을 κ°€μ§€λ―€λ‘œ μ„œλ‘œ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆλ‹€. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ κ³ μœ ν•œ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Όν•˜λŠ” μ†μ„±μ˜ 경우, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‘œ μ„ μ–Έν•œλ‹€.

 

2️⃣ 클래슀 λ³€μˆ˜ (Class Variable)

: 클래슀 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 방법은 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ•žμ— static을 λΆ™μ΄λŠ” 것이닀. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ 독립적인 μ €μž₯곡간을 κ°–λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€λŠ” 달리, 클래슀 λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅λœ μ €μž₯곡간을 κ³΅μœ ν•˜κ²Œ λœλ‹€. ν•œ 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ΄ 곡톡적인 값을 μœ μ§€ν•΄μ•Όν•˜λŠ” μ†μ„±μ˜ 경우, 클래슀 λ³€μˆ˜λ‘œ μ„ μ–Έν•΄μ•Ό ν•œλ‹€.

클래슀 λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€λŠ” 달리 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  μ–Έμ œλΌλ„ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” νŠΉμ§•μ΄ 있고, μ‚¬μš©ν•  λ•Œμ—λŠ” '클래슀 이름.ν΄λž˜μŠ€λ³€μˆ˜' 와 같은 ν˜•μ‹μœΌλ‘œ μ‚¬μš©λœλ‹€.

3️⃣ 지역 λ³€μˆ˜ (Local Variable)

: λ©”μ„œλ“œ 내에 μ„ μ–Έλ˜μ–΄ λ©”μ„œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ©°, λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ†Œλ©Έλ˜μ–΄ μ‚¬μš©ν•  수 μ—†κ²Œ λœλ‹€. 반볡문 λΈ”λŸ­ μ•ˆμ— μ„ μ–Έλœ 지역 λ³€μˆ˜λŠ”, 지역 λ³€μˆ˜κ°€ μ„ μ–Έλœ λΈ”λŸ­ μ•ˆμ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ³ , λΈ”λŸ­μ„ λ²—μ–΄λ‚˜λ©΄ μ†Œλ©Έμ΄ λ˜μ–΄ μ‚¬μš©ν•  수 μ—†κ²Œ λœλ‹€.


πŸ”Ž λ©”μ„œλ“œ

λ©”μ„œλ“œλž€?
  • νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λͺ…λ Ήλ¬Έμ˜ 집합
  • 클래슀의 κΈ°λŠ₯을 λ‹΄λ‹Ή
λΆ„λ₯˜
  • λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜ (Method Signature) / λ©”μ„œλ“œ μ„ μ–ΈλΆ€(Header): λ°˜ν™˜ νƒ€μž…, λ©”μ„œλ“œ 이름, 맀개 λ³€μˆ˜
  • λ©”μ„œλ“œ λ°”λ”” (Method Body) / κ΅¬ν˜„λΆ€(Body) : λ©”μ„œλ“œμ˜ λ‚΄μš© (κ΄„ν˜Έ 속 λ©”μ„œλ“œμ˜ λ‚΄μš©μ„ μˆ˜ν–‰)
λ°˜ν™˜νƒ€μž… λ©”μ„œλ“œμ΄λ¦„ (λ§€κ°œλ³€μˆ˜) {
    /* λ©”μ„œλ“œ ν˜ΈμΆœμ‹œ μˆ˜ν–‰λ  μ½”λ“œ */
}

1️⃣ λ§€κ°œλ³€μˆ˜ μ„ μ–Έ

: λ§€κ°œλ³€μˆ˜λŠ” λ©”μ„œλ“œκ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ 값듀을 μž…λ ₯λ°›κΈ° μœ„ν•œ 것이닀. ν•„μš”ν•œ κ°’μ˜ 개수만큼 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©° 각 λ³€μˆ˜ κ°„μ˜ ꡬ뢄은 μ‰½ν‘œλ₯Ό μ‚¬μš©ν•œλ‹€. μ£Όμ˜ν•  점은 일반적인 λ³€μˆ˜ μ„ μ–Έκ³Ό 달리, 두 λ³€μˆ˜μ˜ νƒ€μž…μ΄ 같아도 λ³€μˆ˜μ˜ νƒ€μž…μ„ μƒλž΅ν•  수 μ—†λ‹€λŠ” 것이닀.

 

2️⃣ λ°˜ν™˜ νƒ€μž…

: λ©”μ„œλ“œμ˜ μž‘μ—… μˆ˜ν–‰ κ²°κ³Ό 좜λ ₯의 νƒ€μž…μ„ μ λŠ”λ‹€. λ§Œμ•½ λ°˜ν™˜κ°’μ΄ μ—†λ‹€λ©΄ voidλ₯Ό 적어야 ν•œλ‹€.

λ©”μ„œλ“œμ˜ νƒ€μž…μ΄ voidκ°€ μ•„λ‹Œ 경우, κ΅¬ν˜„λΆ€ μ•ˆμ— λ°˜λ“œμ‹œ return λ°˜ν™˜κ°’μ΄ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€. 이 λ¬Έμž₯은 μž‘μ—… μˆ˜ν–‰ 결과인 λ°˜ν™˜ 값을 ν˜ΈμΆœν•œ λ©”μ„œλ“œλ‘œ μ „λ‹¬ν•˜λŠ”λ°, 이 κ°’μ˜ νƒ€μž…μ€ λ°˜ν™˜ νƒ€μž…κ³Ό μΌμΉ˜ν•˜κ±°λ‚˜ 적어도 μžλ™ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•œ 것이어야 ν•œλ‹€.

 

3️⃣ λ©”μ„œλ“œ 호좜

: λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ, κ΄„ν˜Έ μ•ˆμ— 지정해쀀 값을 인수 λ˜λŠ” 인자라고 ν•œλ‹€. 인자의 κ°œμˆ˜λ‚˜ μˆœμ„œλŠ” 호좜된 λ©”μ„œλ“œμ— μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜μ™€ μΌμΉ˜ν•΄μ•Όν•œλ‹€. λ˜ν•œ μΈμˆ˜λŠ” λ©”μ„œλ“œκ°€ 호좜 λ˜λ©΄μ„œ λ§€κ°œλ³€μˆ˜μ— λŒ€μž…λ˜λ―€λ‘œ, 인자의 νƒ€μž…μ€ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό μΌμΉ˜ν•˜κ±°λ‚˜ μžλ™ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•œ 것이어야 ν•œλ‹€.


λŒ“κΈ€