/*
내부클래스 Inner Class
Member 멤버 변수나 멤버 메서드들과 같이 클래스가 정의
외부 클래스의 멤버를 참조할 수 있다.
Static 변수를 가질 수 없다.
객체를 생성하기 위해서는 외부 클래스의 객체를 먼저 생성해야 한다.
Local 특정한 메서드 내에 클래스가 정의된 경우
간단한 기능을 갖는 임시 클래스로 사용
메소드 내부에서 선언되고 메소드 안에서만 객체화 할 수 있다.
메소드 외부에서는 사용할 수 없습니다.
접근 수정자를 사용할 수 없다.
Static 클래스가 static으로 선언된 경우
static변수를 가지고 있다면 클래스는 static으로 선언해야 한다
외부 클래스의 static 멤버만 참조할 수 있다.
Anonymous 참조할 수 있는 이름이 없는 경우
한 번만 사용하고 버려야 할 객체의 경우
*/
class Outer
{
private int a = 10;
public void disp()
{
System.out.println( "Outer a : " + a );
////////////////////////// Local Inner Class //////////////////////////
class InnerLocal
{
private int c = 30;
public void disp()
{
System.out.println( "InnerLocal a : " + a );
System.out.println( "InnerLocal b : " + c );
}
} // Class InnerLocal
InnerLocal il = new InnerLocal();
il.disp();
}
////////////////////////// Memeber Inner Class //////////////////////////
class InnerMember
{
private int b = 20;
public void disp()
{
System.out.println( "InnerMember a : " + a );
System.out.println( "InnerMember b : " + b );
}
} // InnerMember
////////////////////////// Memeber Inner Class //////////////////////////
static class InnerStatic
{
private static int d = 40;
public void disp()
{
System.out.println( "InnerMember d : " + d );
}
} // InnerStatic
} // class Outer
class InnerEx
{
public static void main( String[] args )
{
// Member Inner Class
Outer out = new Outer();
Outer.InnerMember im = out. new InnerMember();
// Outer.InnerMember im = new Outer(). new InnerMember();
im.disp();
// Local Inner Class
out.disp();
// Static Inner Class
Outer.InnerStatic is = new Outer.InnerStatic();
is.disp();
}
}
-----------------------------------------------------------------------------------------------------------------
NO.2
/*
내부클래스 Inner Class
Member 멤버 변수나 멤버 메서드들과 같이 클래스가 정의
외부 클래스의 멤버를 참조할 수 있다.
Static 변수를 가질 수 없다.
객체를 생성하기 위해서는 외부 클래스의 객체를 먼저 생성해야 한다.
Local 특정한 메서드 내에 클래스가 정의된 경우
간단한 기능을 갖는 임시 클래스로 사용
메소드 내부에서 선언되고 메소드 안에서만 객체화 할 수 있다.
메소드 외부에서는 사용할 수 없습니다.
접근 수정자를 사용할 수 없다.
Static 클래스가 static으로 선언된 경우
static변수를 가지고 있다면 클래스는 static으로 선언해야 한다
외부 클래스의 static 멤버만 참조할 수 있다.
Anonymous 참조할 수 있는 이름이 없는 경우
한 번만 사용하고 버려야 할 객체의 경우
*/
class Outer
{
private int a = 10;
public void disp()
{
System.out.println( "Outer a : " + a );
////////////////////////// Local Inner Class //////////////////////////
class InnerLocal
{
private int c = 30;
public void disp()
{
System.out.println( "InnerLocal a : " + a );
System.out.println( "InnerLocal b : " + c );
}
} // Class InnerLocal
InnerLocal il = new InnerLocal();
il.disp();
}
////////////////////////// Memeber Inner Class //////////////////////////
class InnerMember
{
private int b = 20;
public void disp()
{
System.out.println( "InnerMember a : " + a );
System.out.println( "InnerMember b : " + b );
}
} // InnerMember
////////////////////////// Memeber Inner Class //////////////////////////
static class InnerStatic
{
private static int d = 40;
public void disp()
{
System.out.println( "InnerMember d : " + d );
}
} // InnerStatic
} // class Outer
abstract class InnerAnony
{
int e = 50;
public abstract void disp();
}
class InnerEx
{
public static void main( String[] args )
{
// Member Inner Class
Outer out = new Outer();
Outer.InnerMember im = out. new InnerMember();
// Outer.InnerMember im = new Outer(). new InnerMember();
im.disp();
// Local Inner Class
out.disp();
// Static Inner Class
Outer.InnerStatic is = new Outer.InnerStatic();
is.disp();
// Anonymous Inner Class
InnerAnony ia = new InnerAnony() // 예시 1
{
public void disp()
{
System.out.println( "InnerAnony e : " + e );
}
};
ia.disp();
new InnerAnony() // 예시 2
{
public void disp()
{
System.out.println( "InnerAnony e : " + e );
}
}.disp();
}
}
'매니저 > JAVA1' 카테고리의 다른 글
JAVA1 Exception 예제1 (임시저장) (0) | 2011.12.23 |
---|---|
JAVA1 InnerWindow 예제 (임시저장) (0) | 2011.12.23 |
JAVA1 InterWindow 예제 (임시저장) (0) | 2011.12.23 |
JAVA1 interface 예제3 (임시저장) (0) | 2011.12.23 |
JAVA1 interface 예제2 (임시저장) (0) | 2011.12.23 |