μμ±μ
new
ν€μλλ₯Ό ν΅ν΄ μΈμ€ν΄μ€κ° μμ±λ λ νΈμΆλλ μΈμ€ν΄μ€ λ³μ μ΄κΈ°ν λ©μλμ΄λ€.
μμ±μλ λ©μλμ λΉμ·ν ꡬ쑰λ₯Ό κ°κ³ μμ§λ§ ν΄λμ€μ μ΄λ¦κ³Ό κ°μ μ΄λ¦μ μ¬μ©νλ€λ μ κ³Ό λ°ν νμ μ΄ μλ€λ μ μμ λ©μλμλ ν° μ°¨μ΄λ₯Ό κ°λλ€.
this
μ this()
this()
λ©μλλ μμ μ΄ μν ν΄λμ€μμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©λλ€. λ°λμ μμ±μ λ΄λΆμμλ§ μ¬μ©ν μ μμΌλ©° 첫 λ²μ§Έ μ€μ μμΉν΄μΌ νλ€.
public class Test {
public static void main(String[] args) {
Hello hello = new Hello();
Hello hello2 = new Hello(10);
}
}
class Hello {
public Hello() {
System.out.println("Helloμ 첫 λ²μ§Έ μμ±μ νΈμΆ!");
};
public Hello(int x) {
this();//Hello() μ€ν
System.out.println("Helloμ λ λ²μ§Έ μμ±μ νΈμΆ!");
}
}
//Output
Helloμ 첫 λ²μ§Έ μμ±μ νΈμΆ!
Helloμ 첫 λ²μ§Έ μμ±μ νΈμΆ!
Helloμ λ λ²μ§Έ μμ±μ νΈμΆ!
this()
κ° νΈμΆλμ΄ λ€μ 첫 λ²μ§Έ μμ±μκ° μΆλ ₯λλ κ²μ νμΈν μ μλ€.
this
ν€μλλ this()
μ λΉμ·νκ²(?) μκ²Όμ§λ§ μ ν λ€λ₯Έ μν μ μννλ€. this
λ μΈμ€ν΄μ€ μκΈ° μμ μ κ°λ¦¬ν€λ μ°Έμ‘° λ³μλ‘, μΈμ€ν΄μ€ λ³μμ 맀κ°λ³μλ₯Ό ꡬλΆνκΈ° μν μ©λλ‘ μ¬μ©λλ€. μ°Έμ‘° λ³μμ΄κΈ° λλ¬Έμ κ°μλ μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λλ€.
ν΄λμ€ μΈλΆμμ λ©€λ²(νλ, λ©μλ, μ΄λ ν΄λμ€)λ₯Ό νΈμΆνλ €λ©΄ λ¨Όμ κ°μ²΄λ₯Ό μμ±ν νμ μ°Έμ‘° λ³μλͺ
.λ©€λ²λͺ
μ ννλ‘ μ κ·Όν΄μΌ νμ§λ§ ν΄λμ€ λ΄λΆμμλ κ°μ²΄ μμ± μμ΄ this
ν€μλλ₯Ό μ¬μ©νμ¬ νλμ λ©μλλ₯Ό λ°λ‘ μ¬μ©ν μ μλ€.
μΌλ°μ μΈ κ²½μ° μ»΄νμΌλ¬κ° this.
λ₯Ό μΆκ°ν΄μ£ΌκΈ° λλ¬Έμ μλ΅νλ κ²½μ°λ μλ€. νμ§λ§ μλ°μμ μ 곡νλ λλΆλΆμ APIμλ λ©μλμ μ§μ λ³μλͺ
μ΄ νλλͺ
κ³Ό λμΌνκ² κ΅¬μ±λμ΄ μκΈ° λλ¬Έμ this.
λ₯Ό λͺ
μμ μΌλ‘ νννμ¬ λμ ꡬλΆν΄μΌ νλ€.
class Ex{
int m,n;//νλ, 0μΌλ‘ κ°μ μ΄κΈ°ν
void init(int m, int n) {
// 맀κ°λ³μμΈ m, nμ μ§μλ³μμ ν λΉλμ΄ init()μμλ§ μ¬μ©ν μ μλ€.
m = m;
n = n;
}
}
public class This_ex {
public static void main(String[] args) {
Ex e = new Ex();
// κ°μ²΄μ m, nμ μΆλ ₯(νμ¬ μ΄κΈ°νλ§ μ§ν)
System.out.println(e.m); // 0
System.out.println(e.n); // 0
// ν΄λΉ κ°μ λ©μλμμλ§ νμ©κ°λ₯
e.init(5, 10);
System.out.println(e.m); // 0
System.out.println(e.n); // 0
}
}
e
κ°μ²΄μ μΈμ€ν΄μ€ λ³μμ init()
μ λ³μλͺ
μ΄ m
, n
μΌλ‘ λμΌνκ² κ΅¬μ±λμ΄ μλ€. μ΄ κ²½μ°μ μ»΄νμΌλ¬λ m
, n
μ λ μ’μ λ²μμΈ μ§μ λ³μλ‘ μΈμνμ¬ ν΄λΉ λ©μλ μμμλ§ μ¬μ©ν μ μκ² λλ€. λ°λΌμ νλ κ°μ΄ 5, 10μΌλ‘ λ°λμ§ μκ³ 0μ΄ μΆλ ₯λλ€. μλ§λ μμ±μλ μ΄κΈ°ν κ°μ΄ μλ λ³κ²½λ νλ κ°μ΄ μΆλ ₯λλ κ²μ μλνμ κ²μ΄λ€. μμ±μκ° μλν λλ‘ λ겨λ°μ 맀κ°λ³μλ₯Ό νλμ λμ
νλ €λ©΄ μλμ κ°μ΄ this.
ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
μμ ν μ½λλ λ€μκ³Ό κ°λ€.
class Ex{
int m,n;//νλ, 0μΌλ‘ κ°μ μ΄κΈ°ν
void init(int m, int n) {
// νλ κ°μ λμ
λλ€.
this.m = m;
this.n = n;
}
}
public class This_ex {
public static void main(String[] args) {
Ex e = new Ex();
// κ°μ²΄μ m, nμ μΆλ ₯(νμ¬ μ΄κΈ°νλ§ μ§ν)
System.out.println(e.m); // 0
System.out.println(e.n); // 0
e.init(5, 10);
System.out.println(e.m); // 5
System.out.println(e.n); // 10
}
}
λ΄λΆ ν΄λμ€
λ΄λΆ ν΄λμ€(Inner Class)λ ν΄λμ€ λ΄λΆμ μ μΈλ ν΄λμ€λ‘, μΈλΆ ν΄λμ€μ λ΄λΆ ν΄λμ€κ° μλ‘ μ°κ΄λμ΄ μμ λ μ¬μ©νλ€.
λ΄λΆ ν΄λμ€λ₯Ό μ¬μ©νλ©΄ μΈλΆ ν΄λμ€μ λ©€λ²λ€μ μ½κ² μ κ·Όν μ μμΌλ©° μ½λμ 볡μ‘μ±μ μ€μΌ μ μλ€. λν μΈλΆμ μΌλ‘ λΆνμν μ 보λ€μ μ¨κΈΈ μ μμ΄μ κ°μ²΄μ§ν₯μ ν΅μ¬ μμΉμΈ μΊ‘μνλ₯Ό λ¬μ±νλ λ° μ μ©νλ€.
λ΄λΆ ν΄λμ€λ λ³μκ° μ μΈ μμΉμ λ°λΌ ꡬλΆλλ κ²κ³Ό μ μ¬νκ² κ·Έ μμΉλ₯Ό κΈ°μ€μΌλ‘ ꡬλΆν μ μμΌλ©° λ³μμ μ μ¬νκ² μΈμ€ν΄μ€ λ΄λΆ ν΄λμ€μ μ μ λ΄λΆ ν΄λμ€λ₯Ό λ©€λ² λ΄λΆ ν΄λμ€λΌκ³ ν΅μΉνλ€.
- μΈμ€ν΄μ€ λ΄λΆ ν΄λμ€
- μ μ λ΄λΆ ν΄λμ€
- μ§μ λ΄λΆ ν΄λμ€
'π Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μΆμν(Abstraction) (1) | 2022.09.07 |
---|---|
[Java] λ€νμ±(Polymorphism) (0) | 2022.09.07 |
[Java] μΊ‘μν π (0) | 2022.09.06 |
[Java] μμ(Inheritance) (0) | 2022.09.06 |
[Java] νλμ λ©μλ μ€λ²λ‘λ© (0) | 2022.09.02 |