중첩 클래스
: 클래스 안에 클래스를 가짐으로 클래스의 관리의 효율을 높인것 (안쪽 클래스에서는
static 사용 불가), 중첩클래스안에서는 바깥쪽 클래스의 메소드 및 필드를 바로 사용할수 있다.
static 사용 불가), 중첩클래스안에서는 바깥쪽 클래스의 메소드 및 필드를 바로 사용할수 있다.
중첩클래스의 생성파일:
ex) class Outer{ ... class inner1{..} } -> Outer.class, Outer$inner1.class
ex) class Outer{ ... class inner1{..} } -> Outer.class, Outer$inner1.class
중첩클래스의 객체 생성방법
: 바깥쪽 클래스의 객체를 먼저 생성후 다시 안쪽 클래스의 객체를 생성해야한다.
: 바깥쪽 클래스의 객체를 먼저 생성후 다시 안쪽 클래스의 객체를 생성해야한다.
ex)
class Outer
{
private int x=100; //필드
private static int y=200;
public Outer(){} //생성자
public void disp(){ System.out.println("x+y=" + (x+y)); } //메소드
{
private int x=100; //필드
private static int y=200;
public Outer(){} //생성자
public void disp(){ System.out.println("x+y=" + (x+y)); } //메소드
//중첩클래스
class Inner1{
private int a=200; //필드
//private static int b=100; -> 중첩클래스 안에서 static사용 불가
public Inner1(){} //생성자
punlic void disp_in(){ //메소드
System.out.println("a=" + a);
System.out.println("x=" + x); // -> 바깥쪽 클래스의 멤버필드를 사용할수 있다.
disp(); // -> 바깥쪽 클래스의 메소드를 사용할수 있다.
}
class Inner1{
private int a=200; //필드
//private static int b=100; -> 중첩클래스 안에서 static사용 불가
public Inner1(){} //생성자
punlic void disp_in(){ //메소드
System.out.println("a=" + a);
System.out.println("x=" + x); // -> 바깥쪽 클래스의 멤버필드를 사용할수 있다.
disp(); // -> 바깥쪽 클래스의 메소드를 사용할수 있다.
}
class Outer_Inner{ } //그안의 중첩클래스
}
}
}
}
public calss Exam{
public static void main(String[] ar){
public static void main(String[] ar){
Outer ot = new Outer(); //중첩클래스 객체생성시.. 바깥쪽 클래스 먼저 생성후
Outer.Inner oi = ot.new Inner(); //그것을 이용해서 안쪽 클래스 객체를 생성해야한다.
Outer.Inner.Outer_Inner oio = oi.new Outer_Inner();
Outer.Inner oi = ot.new Inner(); //그것을 이용해서 안쪽 클래스 객체를 생성해야한다.
Outer.Inner.Outer_Inner oio = oi.new Outer_Inner();
oi.disp_in();
}
}
'C. Java' 카테고리의 다른 글
지역 중첩 클래스 (0) | 2017.07.02 |
---|---|
정적 중첩 클래스 (0) | 2017.07.02 |
java 자바 인터페이스 (0) | 2017.07.02 |
아스키 코드표 (0) | 2017.07.02 |
JVM (java virtual machine) 구조 (0) | 2017.07.02 |