[Java] 05. ν΄λμ€μ λ©€λ²
- -
π. ν΄λμ€μ λ©€λ²
π I. λ©μλ μ²λ¦¬ λ°©μ
π 1. λ©μλ νΈμΆ λ©μ»€λμ¦
- κ° μΈμμ ννμμ λ©μλκ° νΈμΆλκΈ° μ μ λ¨Όμ κ³μ°λ©λλ€.
κ³μ°λ κ²°κ³Όκ°μ μμ λ³μμ μ μ₯λ©λλ€. - κ³μ°λ κ° μΈμκ°μ ν΄λΉλλ νμ 맀κ°λ³μμ μμΉ μμλλ‘ λ³΅μ¬λ©λλ€.
맀κ°λ³μμ νμ μΌλ‘ μΈμλ₯Ό νμ λ³ν(μΊμ€ν )ν μ μμ΅λλ€. - λ©μλ 본체μ λ¬Έμ₯μ λ§μ§λ§ λ¬Έμ₯μ΄λ return λ¬Έμ΄ λμ€κΈ° μ κΉμ§ μνλ©λλ€.
- return λ¬Έμ ννμμ΄ κ³μ°λ©λλ€.
κ³μ°μ κ²°κ³Όκ°μ λ§μ°¬κ°μ§λ‘ μμλ³μμ μ μ₯λκ³ μμ λ³μμ κ°μ νΈμΆμΈ‘μΌλ‘ λ°νν©λλ€. - λ©μλ νΈμΆμΈ‘μ λ©μλ νΈμΆλ¬Έ μ리μ return λ¬ΈμΌλ‘ λ겨λ°μ κ²°κ³Όκ°μ λμ ν©λλ€.
π 2. λ©μλ μΈμ μ λ¬ λ°©μ
μΈμκ° λ§€κ°λ³μλ‘ μ λ¬λλ λ°©μμ λν κ΄μ μ λ κ°μ§κ° μμ΅λλ€. μΈμκ° λ§€κ°λ³μλ‘ λ³΅μ¬λλ κ²μ λͺ¨λ λμΌν©λλ€. μΈμ κ° μμ²΄κ° λ³΅μ¬λλ κ° νΈμΆ(call by value) λ°©μκ³Ό μ°Έμ‘° λ³μμ κ°μ΄ 볡μ¬λλ μ°Έμ‘° νΈμΆ(call by reference) λ°©μμ΄ μμ΅λλλ€. μ΄ λ λ°©μμ 맀κ°λ³μμ μλ£νμ λ°λΌ λλ©λλ€.
(1) κ° νΈμΆ (call by value)
- κΈ°λ³Έ μλ£νμ λ©μλλ‘ νΈμΆν λ
- μ€μΈμμ κ°μ΄ 맀κ°λ³μλ‘ λ³΅μ¬λμ΄ μ λ¬
(2) μ°Έμ‘° νΈμΆ (call by reference)
- λ©μλ νΈμΆμμ μ°Έμ‘° μλ£νμ μ€μΈμλ‘ μ¬μ©ν λ
- κ°μ²΄μ κ° λμ μ°Έμ‘° λ³μκ° κ°μ§ κ°μ²΄μ λν μ°Έμ‘°κ°μ 맀κ°λ³μλ‘ μ λ¬
- 맀κ°λ³μλ₯Ό ν΅ν΄ μ€μΈμ μμμ μ§μ μ°Έμ‘°νμ¬ κ°μ 곡μ ν μ μμ
π 3. κ°μ μν μΈμ μ λ¬
class Point {
int x, y;
}
public class Swap1 {
static void swap(int n1, int n2) {
int tmp;
tmp = n1;
n1 = n2;
n2 = tmp;
}
public static void main(String[] a){
Point p = new Point(); // Point νμ
μ κ°μ²΄ μμ±
p.x = 20; // pμ λ©€λ² λ³μ μ΄κΈ°ν
p.y = 50;
swap(p.x, p.y); //κ° λ³νμ μν ν¨μ νΈμΆ
System.out.println(p.x + "," + p.y);
}
}
λ€μκ³Ό κ°μ΄ κΈ°λ³Έ μλ£νμΌλ‘ 맀κ°λ³μλ₯Ό λ°μ Pointμ λ μ μ μ’νκ°μ λ°κΎΈλ €λ νλ‘κ·Έλ¨μ΄ μλ€κ³ μκ°ν΄λ΄ μλ€. μ΄ νλ‘κ·Έλ¨μ κ°λ¨ν μ€μν μ½λλ§ μ μ΄ νλ¦μ λνλ΄λ©΄ λ€μ κ·Έλ¦Όκ³Ό κ°μ΅λλ€.
- λ©λͺ¨λ¦¬ μμμ x, y κ°μ μ μ₯νλ Point κ°μ²΄ pλ₯Ό μμ±ν©λλ€.
κ°μ²΄μ κ° λ©λͺ¨λ¦¬ κ°μλ . μ°μ°μλ‘ μ κ·Όν©λλ€. - main( ) ν¨μ μμμμ swap( ) ν¨μλ₯Ό νΈμΆν©λλ€.
main( ) ν¨μμμ swap( ) ν¨μλ‘ μ μ΄ νλ¦μ΄ λμ΄κ°λλ€. - swap( ) ν¨μλ μΈμλ‘ κ°μ²΄μ κ° κ°μ λ³΅μ¬ λ°μ, 맀κ°λ³μλ‘ λ³΅μ¬ν©λλ€.
- swap( ) ν¨μλ λ°νκ°μ΄ μκΈ° λλ¬Έμ λ³νλλ κΉμ΄ μμ΅λλ€.
swap( ) ν¨μκ° μ’ λ£λκ³ νΈμΆμΈ‘μΌλ‘ λμκ° λ ν¨μ μμμ μ μΈλ λ©λͺ¨λ¦¬λ μ¬λΌμ§κΈ° λλ¬Έμ κ°μ λ³νμ§ μμ΅λλ€.
π 4. μ°Έμ‘°μ μν μΈμ μ λ¬
class Point {
int x, y;
}
public class Swap1 {
static void swap(Point swp) {
int tmp;
tmp = swp.x;
swp.x = swp.y;
swp.y = tmp;
}
public static void main(String[] a){
Point p = new Point(); // Point νμ
μ κ°μ²΄ μμ±
p.x = 20; // pμ λ©€λ² λ³μ μ΄κΈ°ν
p.y = 50;
swap(p); //κ° λ³νμ μν ν¨μ νΈμΆ
System.out.println(p.x + "," + p.y);
}
}
μ΄λ²μλ μ°Έμ‘° μλ£νμΌλ‘ 맀κ°λ³μλ₯Ό λ°μ Pointμ λ μ μ μ’νκ°μ λ°κΎΈλ €λ νλ‘κ·Έλ¨μ΄ μμ΅λλ€. μ΄ νλ‘κ·Έλ¨μ κ°λ¨ν μ½λμ νλ¦μ λ€μκ³Ό κ°μ΅λλ€.
- λ©λͺ¨λ¦¬ μμμ x, y κ°μ μ μ₯νλ Point κ°μ²΄ pλ₯Ό μμ±ν©λλ€.
κ°μ²΄μ κ° λ©λͺ¨λ¦¬ κ°μλ .μ°μ°μλ‘ μ κ·Όν©λλ€. - main( ) ν¨μ μμμμ swap( ) ν¨μλ₯Ό νΈμΆν©λλ€.
main( ) ν¨μμμ swap( ) ν¨μλ‘ μ μ΄ νλ¦μ΄ λμ΄κ°λλ€. - swap( ) ν¨μλ μΈμλ‘ μ°Έμ‘°λ³μμ κ°μ λ°μ μ€μΈμ κ°μ μ°Έμ‘°ν μ μκ² ν©λλ€.
- swap( ) ν¨μλ‘ μ€μΈμ μμμ μ§μ μ κ·ΌνκΈ°μ return κ°μ΄ μμ΄λ μ€μ κ°μ΄ λ°λλλ€.
π 5. λ©μλ μ€λ²λ‘λ©(Overloading)
- νλμ ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ κ°μ§ λ©μλκ° μ¬λ¬κ° μ μ
- λΉμ·ν λμμ νλ λ€μν λ©μλλ€μ μΌκ΄λκ² μ‘°μ
- ν¨μ νΈμΆλ¬Έμ λ§λλ©΄ ν¨μμ μ΄λ¦, μΈμ λͺ©λ‘, μΈμ νμ μΌλ‘ ν¨μ νΈμΆμ ꡬλΆ
- κ°μ ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ κ°μ§λ λ©μλλ€λ§μ μλ―Έ, λ€λ₯Έ ν΄λμ€λ κ΄κ³ μμ
π II. this μ°Έμ‘° λ³μ
π 1. this μ°Έμ‘° λ³μ
- λ©μλ νΈμΆ μ λ©μλ μμ μ νΈμΆν κ°μ²΄μ λν μ°Έμ‘°κ°μ λ°λ λ³μ, μ¦ κ°μ²΄ μμ μ λν λ νΌλ°μ€
- λ©μλ μμμ μμ μ λ€λ₯Έ λ©€λ²λ€μ μ‘°μνκ³ μν λ μ¬μ©
- ν¨μ λ΄λΆμ μΌλ‘ μ λ¬λλ μ°Έμ‘°κ°μΌλ‘ μλμ μΌλ‘ μ»΄νμΌλ¬μ μν΄ κΈ°μ λ¨
- λͺ μμ μΌλ‘ μ¬μ©ν΄ λ°μ΄ν° λ©€λ²μ λ§€κ° λ³μμ ꡬλΆμ ν¨
π 2. μ€μ thisμ μ¬μ©
this μ°Έμ‘° λ³μλ λ€μκ³Ό κ°μ΄ 맀κ°λ³μμ λ©€λ² λ³μμ μ΄λ¦μ΄ κ°μ λ μ¬μ©ν©λλ€. this.radius = radius;μ μΌμͺ½ this.radiusλ λ©€λ² λ³μ radiusλ₯Ό μ€λ₯Έμͺ½μ radiusλ 맀κ°λ³μλ₯Ό μλ―Έν©λλ€. κ²°κ΅ νλμ λ©μλλ₯Ό λ§μ μΈμ€ν΄μ€ κ°μ²΄κ° 곡μ νκ² λλ€λ©΄ λ©μλ μμμ μλ³νλ μμ±κ°μ λͺ λ£νκ² μ κ·ΌνκΈ° μν κ²μ΄ this μ°Έμ‘°λ³μμ λλ€.
πIII. μ μ λ©€λ²
π 1. λ©€λ² νλ
[μ κ·Ό μ ν] [static] <μλ£ν> <μλ³μ>;
λ©€λ²νλμ static μμμ "κ°μ 곡μ νλ€"λ κ²μ΄ μ€μν μν μ λλ€.
(1) instance λ©€λ² νλ
- κ° κ°μ²΄ μμ±μ λ³λμ λ©λͺ¨λ¦¬κ° ν λΉ
- κ°μ²΄ μλ©Έμ λ©λͺ¨λ¦¬κ° μλ ν λΉ ν΄μ
- λ©€λ² λ³μμ κ²½μ° κ° κ°μ²΄λ§λ€ κ³ μ μ μμ±κ°μ μ μ₯ κ°λ₯
(2) static λ©€λ² νλ
- νλ‘κ·Έλ¨ μμμ λ©λͺ¨λ¦¬ ν λΉ
- μμ±λ κ°μ²΄μ μμ μκ΄μμ΄ λ¨ νλλ§ μμ±λμ΄ λͺ¨λ κ°μ²΄λ€μ΄ μ΄ μμμ 곡μ
- κ°μ²΄λ₯Ό μμ±νμ§ μκ³ λ μ¬μ© κ°λ₯
- static μ΄ μ νμ§ μμΌλ©΄ μΌλ°μ μΌλ‘ instance λ©€λ²κ° μκΈ°λ―λ‘ [static] ν€μλλ‘ λ§λ€ μ μμ
π 2. static λ©€λ² νλμ μ¬μ© μ
staticμΌλ‘ μ μΈλ λ©€λ² λ³μλ ν΄λμ€ λ΄μμ 곡ν΅μ μΌλ‘ μ¬μ©λλλ‘ λͺ¨λ λ©€λ²μκ² "곡μ "λ©λλ€. λ³μλ staticμΌλ‘ μ μΈν μ μμ§λ§ λͺ¨λ κ°μμ μ°Έμ‘°λκΈ°μ μμλ₯Ό μ μΈνλ κ²μ΄ λ μ’μ΅λλ€. λν κ° κ°μ²΄ μ°Έμ‘° λ³μλ‘ μ κ·ΌνκΈ° 보λ€λ ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όνλ κ²μ΄ μ’μ΅λλ€.
π 3. λ©μλμ μ’ λ₯
λ©μλμ static μμμ "κ°μ²΄λ₯Ό μμ±νμ§ μκ³ νμλ₯Ό ν μ μλ€"λ κ²μ΄ μ£Όμν μν μ λλ€.
(1) instance λ©μλ
- κ°μ²΄κ° μννλ μΌλ°μ μΈ νμ
- μμ μ λͺ¨λ λ©€λ²λ₯Ό μ§μ μ°Έμ‘° κ°λ₯
(2) static λ©μλ
- κ°μ²΄λ₯Ό μμ±νμ§ μκ³ νμλ₯Ό μν
- κ°μ²΄ μΈλΆμμ μ κ·Όλμ§ μλλ‘ static λ©€λ² νλμ μμ ν μ κ·Ό μ 곡μ μν λ©μλ
- κ°μ²΄ μμ±κ³Ό κ΄λ ¨μλ μΌλ°μ κΈ°λ₯μ κ°νΈν μ¬μ© μ 곡
- staticμ΄ μλ λ©€λ² (instance λ©€λ²)λ μ§μ μ°Έμ‘° λΆκ°
- this μ°Έμ‘° λ³μλ κ°μ²΄κ° λ§λ€μ΄μ ΈμΌ μ¬μ© κ°λ₯νλ―λ‘ μ¬μ© λΆκ°
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] 07-1 μλ°μ ν¨ν€μ§μ λͺ¨λ (0) | 2022.10.05 |
---|---|
[Java] 06. μΊ‘μνμ μ 보 μλ (1) | 2022.09.30 |
[Java] 04. ν΄λμ€μ κ°μ²΄ (0) | 2022.09.28 |
[JAVA] # ν¬μΈν° VS μ°Έμ‘° μλ£ν (1) | 2022.09.23 |
[JAVA] 03. μλ° νλ‘κ·Έλ¨μ μλ£ν (1) | 2022.09.22 |
μμ€ν κ³΅κ° κ°μ¬ν©λλ€