π μ°Έκ³ ν μ±
- κΈ°λ³Έμ μΈ κ°λ μ μ 리νκ³ μΆκ°μ μΌλ‘ κΆκΈν κ²λ€μ μ 리νμ΅λλ€ -
π₯ π₯ π₯
βοΈ μΈμ€ν΄μ€ λ©€λ² μ΄λ ν΄λμ€_ 426p
• μΈμ€ν΄μ€ λ©€λ² μ΄λ ν΄λμ€
: μμ°ν° ν΄λμ€ λ΄μμ μΈμ€ν΄μ€μΈ κ°μ²΄ λ΄λΆ λ©€λ²μ ννλ‘ μ‘΄μ¬νλ ν΄λμ€
class OuterClass {
public int a = 1;
protected int b = 2;
private int c = 3;
void outerMethod(){
System.out.println("μμ°ν°ν΄λμ€!");
}
class InnerClass {
void innerMethod() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
outerMethod();
}
}
}
public class PraticeInnerClass1 {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.innerMethod();
}
}
λ©€λ² μ΄λ ν΄λμ€ μ€ νλμΈ μΈμ€ν΄μ€ λ©€λ² ν΄λμ€λ κ°μ²΄ λ΄λΆμ λ©€λ²μ ννλ‘ μ‘΄μ¬νλ€. κ°μ²΄μ λ©€λ²λ, ν΄λΉ ν΄λμ€μ μλ νλλ λ©μλλ₯Ό μ΄μΌκΈ° νλλ° ν΄λΉ ν΄λμ€ λ΄λΆμ ν΄λμ€κ° μκΈ΄λ€λ©΄ μ΄ ν΄λμ€λ λ©€λ²λΌλ κ²μ΄λ€. κ·Έλ κΈ°μ μΈμ€ν΄μ€ λ©€λ² μ΄λ ν΄λμ€λ μμ°ν° ν΄λμ€μ λͺ¨λ μ κ·Ό μ§μ μμ λ©€λ²μ μ κ·Όν μ μκ² λλ€.
μλ°λ μ»΄νμΌμ μννλ©΄ κ° ν΄λμ€λ³λ‘ λ°μ΄νΈ μ½λμΈ .class νμΌμ΄ μμ±λλ€. μ΄λ ν΄λμ€ λ§μ°¬κ°μ§λ‘ μμ±λλ€. νμ§λ§ κ·Έ ννλ μμ°ν° ν΄λμ€μλ λ€λ₯Ό μ μλ€. μμ°ν° ν΄λμ€λ 'OuterClass.class'λΌκ³ μμ±μ΄ λ κ²μ΄λ€. κ·Έλ¬λ©΄ μμ°ν° ν΄λμ€ μμ μλ μΈμ€ν΄μ€ λ©€λ² ν΄λμ€λ 'OuterClass$InnerClass.class'λ‘ νμΌμ΄ μμ±λλ€. κ·Έ μ΄μ λ λΉμ°νκ²λ μμ°ν° ν΄λμ€ λ΄λΆμ μκΈ° λλ¬Έμ κ·Έκ²μ νμνκ³ μ μμ±λλ€.
InnerClass λ΄μ innerMethodκ° μλ€. innerMethodλ₯Ό μ¬μ©νκ³ μ νμ¬ μΈμ€ν΄μ€ λ©€λ² ν΄λμ€μ κ°μ²΄λ₯Ό μμ±νλ €νλ€. μΈμ€ν΄μ€ λ©€λ² ν΄λμ€μ κ°μ²΄λ₯Ό μμ±νκΈ° μν΄μλ λ¨Όμ μμ°ν° ν΄λμ€μ κ°μ²΄ μμ±μ΄ νμνλ€. κ·Έ νμ μμ°ν° ν΄λμ€ λ΄μ μλ μ΄λ ν΄λμ€μ΄λ, μμ±ν μμ°ν° ν΄λμ€ κ°μ²΄μ μ°Έμ‘° λ³μλ₯Ό μ΄μ©ν΄ κ°μ²΄ λ΄λΆμ μλ μ΄λ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ€. κ·Έλ¬λ©΄ OuterClass.InnerClass inner = outer.new InnerClass( );κ° λλ€.
μμ μ½λμμ innerMethodλ₯Ό 보면 μμ°ν° ν΄λμ€ νλμ μ κ·Όνκ³ μλ€. μ κ·Ό κ°λ₯ν μ΄μ λ InnerClass λ΄μ OuterClassμ λ©€λ²μ λμΌν μ΄λ¦μ΄ μκΈ° λλ¬ΈμΈλ°, λ§μ½ κ°μ μ΄λ¦μ΄ InnerClassλ΄μ μ‘΄μ¬νλ€λ©΄ μλμμ΄ λ°μν΄ InnerClass λ΄λΆ νλμ κ°μΌλ‘ λ³κ²½λμ΄ μΆλ ₯λ κ²μ΄λ€. κ·ΈλΌ λμΌν μ΄λ¦μ κ°μ§ μνμμ μμ°ν° ν΄λμ€μ λ©€λ²μ μ κ·Όνκ³ μ νλ€λ©΄ μ΄λ»κ² ν΄μΌν κΉ? 'OuterClass.this.a'λ₯Ό λΆμ΄λ©΄ λλ€. OuterClassλ₯Ό λΆμ΄μ§ μμΌλ©΄ InnerClassμ λ©€λ²μ μ κ·Όνλ μ μν΄μΌνλ€.
βοΈ μ μ λ©€λ² μ΄λ ν΄λμ€_ 431p
• μ μ λ©€λ² μ΄λ ν΄λμ€
: μ΄λ ν΄λμ€ μμ staticμ΄ ν¬ν¨λ ν΄λμ€λ€.
class OuterClass {
int a = 1;
static int b = 2;
void outerMethod1() {
System.out.println("μΈμ€ν΄μ€ λ©μλ!");
}
static void outerMethod2() {
System.out.println("μ μ λ©μλ!");
}
static class InnerClass {
void innerMethod() {
System.out.println(b);
outerMethod();
}
}
}
public class PracticeInnerClass2 {
public static void main(String[] args) {
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.innerMethod();
}
}
staticμ΄ ν¬ν¨λ μ΄λ ν΄λμ€λ static νΉμ±μ μ§λκ² λλ€. κ·Έ νΉμ§μ΄ μμ°ν° ν΄λμ€ λ΄μ staticμ΄ λΆμ λ©€λ²λ§ μ μ μ΄λ ν΄λμ€ λ΄λΆμμ μ¬μ©ν μ μκ² νλ€. λ λ€λ₯Έ νΉμ±μ μ΄ν΄λ³΄μ. μμ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ mainμμ μμ°ν° ν΄λμ€μ κ°μ²΄λ₯Ό λ§λ€μ§ μκ³ λ°λ‘ μ μ μ΄λ ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν κ²μ λ³Ό μ μλ€. μμ°ν° ν΄λμ€ λ΄μ μλ μ μ μ΄λ ν΄λμ€λ μ μ λ©€λ²μ΄λ―λ‘ ν΄λμ€λͺ μΌλ‘ λ°λ‘ μ κ·Ό κ°λ₯νλ€.
βοΈ μ§μ μ΄λ ν΄λμ€_ 433p
• μ§μ μ΄λ ν΄λμ€
: λ©μλ λ΄μμ μ μλλ ν΄λμ€
class OuterClass {
int a = 1;
void outerMethod(){
int b = 2;
class InnerClass {
void innerMethod() {
System.out.println(a);
System.out.println(b);
}
}
InnerClass inner = new InnerClass();
inner.innerMethod();
}
}
public class PracticeInnerClass3 {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.outerMethod();
}
}
μ§μ μ΄λ ν΄λμ€λ μ μλ λ©μλ λ΄λΆμμλ§ μ¬μ© κ°λ₯νλ©°, μ§μ μ΄λ ν΄λμ€λ₯Ό μ μΈ μ΄ν λ°λ‘ κ°μ²΄λ₯Ό μμ±ν΄μ μ¬μ©νλ€λ νΉμ§μ΄ μλ€. λ©μλκ° νΈμΆμ΄ λλ©΄ κ·Έλλ§ λ©λͺ¨λ¦¬μ λ‘λ©λκΈ° λλ¬Έμ μ μ μμκ³Όλ λ€λ₯Έ νΉμ±μ κ°μ§κ³ μλ€. μ μ μμμ κ°μ²΄κ° μμ±λκΈ° μ μ λ¨Όμ λ©λͺ¨λ¦¬μ λ‘λ©λμ΄μλ€.
λ©μλ λ΄λΆμ μλ λ³μλ μ§μ λ³μλΌκ³ νλ€. μ§μ μ΄λ ν΄λμ€κ° μ§μ λ³μλ₯Ό μ¬μ©νκ³ μ νλ©΄ ν΄λΉ μ§μ λ³μκ° finalλ‘ μ μΈλμ΄μμ΄μΌ νλ€. λ§μ½ finalμ μ μΈνμ§ μμλ μ»΄νμΌλ¬κ° μμμ ν΄λΉ μ§μ λ³μμ μΆκ°ν΄μ€λ€. λ ν΄λΉ μ§μ λ³μμ κ°μ΄ λ³λλλ€λ©΄ μ»΄νμΌλ¬ μλ¬κ° λ°μνλ€.
Q. μ§μ λ³μμλ§ finalμ λΆμ¬μΌνλ μ΄μ κ° λκΉ?
A. λ©μλκ° λμ΄ λλλΌλ μ§μ μ΄λ ν΄λμ€μ κ°μ²΄λ λ©μλ λ°μμ μ΄μλ¨μ μ μλ€. κ·Έλ°λ° λ©μλ λ΄μ μλ λ³μμΈ μ§μ λ³μλ λ©μλκ° λλλ©΄ μ¬λΌμ§κ² λλ€. μ§μ μ΄λ ν΄λμ€μ κ°μ²΄λ μ΄μλ¨μμ νλν΄μΌνλλ°, λ³μκ° λλλ²λ¦¬λ©΄ ν΄λΉ ν΄λμ€λ μ λλ‘ μ¬μ©ν μ μκ²λλ€. κ·Έλ κΈ°μ finalμ λΆμ¬ ν΄λΉ κ°μ΄ λ³λλμ§ λͺ»νλλ‘νκ³ κ°μ 볡μ¬νμ¬ λ©μλκ° λμ΄λλ μ¬μ©ν μ μκ² ν΄μ€λ€.
'π Java > μλ°μμ μ 볡' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μΌλ° μμΈμ μ€ν μμΈ (0) | 2025.05.08 |
---|---|
[Java] μ΅λͺ μ΄λ ν΄λμ€ (1) | 2025.05.02 |
[Java] μΆμν΄λμ€μ μΈν°νμ΄μ€ (1) | 2025.04.28 |
[Java] final, static, abstract μ μ΄μ (2) | 2025.02.05 |
[Java] λ©μλ μ€λ²λΌμ΄λ©κ³Ό μ€λ²λ‘λ©, super( ) λ©μλ (3) | 2025.02.02 |