본문 바로가기
Study Note/Java

JAVA_ Test119_ 중첩 클래스 종류 / 지역 클래스(로컬 클래스, local class)

by 시뮝 2018. 6. 16.
728x90


Test119  중첩 클래스 종류 / 지역 클래스(로컬 클래스, local class)

※ Test117과 비교할 것~!!!


※ 지역 클래스(로컬 클래스, local class)

   : 메소드 내부에...『public class 클래스명』 or 『public static class 클래스명』


InnerOuterTest .java

class InnerOuterTest // outer

{

static int a=10;

int b=20;


// inner

class InnerNested

{

int c=30;


void write() //-- inner 의 write()

{

System.out.println("inner 의 write()...");

System.out.println("a : " + a);

System.out.println("b : " + b);

System.out.println("c : " + c);

}

}


void write() //-- outer 의 write()

{

System.out.println("outer 의 write()...");

InnerNested ob1 = new InnerNested();

ob1.write(); //-- inner 의 write()

}

}


Test119.java

public class Test119

{

public static void main(String[] args)

{

InnerOuterTest ob2 = new InnerOuterTest();

ob2.write(); //-- outer 의 write


// InnerNested ob3 = new InnerNested();

// --==>> 에러 발생


// InnerOuterTest.InnerNested ob3 = new InnerOuterTest.InnerNested();

// --==>> 에러 발생


// ※ 중첩 내부 클래스와는 달리 외부 클래스의 인스턴스(객체)를

//    사용하지 않고 단독으로 내부 클래스의 인스턴스를 생성하는 것은 불가능하다.


// ※ Test117 과 비교할 것~!!

InnerOuterTest.InnerNested ob3 = ob2.new InnerNested();

//-->>InnerOuterTest.InnerNested ob3 = new InnerOuterTest().new InnerNested(); 와 같은 구문

ob3.write();

}

}


cmd

outer 의 write()...

inner 의 write()...

a : 10

b : 20

c : 30

inner 의 write()...

a : 10

b : 20

c : 30

계속하려면 아무 키나 누르십시오 . . .







728x90

댓글