클래스에서 static 제한자를 사용한다.

내부 클래스를 독립된 클래스 처럼 사용한다

외부에서 주로 내부 클래스의 객체 생성을 할 경우에 주로 사용한다.

두 클래스 모두 Outer 클래스와 밀접한 관계가 있을 때 사용되며 외부 클래스에서 사용이 필요한 경우 static을 붙혀 사용하면 된다.

기본 예제

package inner02_static;

public class Inner02 {
	//정적 내부 클래스
	//static 키워드를 사용
	//외부 클래스에서 객체를 생성한다.
	
	public static class Cal{
		int value =0;
		public void plus() {
			value++;
		}
	}
	
		
	
	public static void main(String[] args) {
		// 객체 생성
		Inner02.Cal cal = new Inner02.Cal();
		cal.plus();
		System.out.println(cal.value);

	}

}

활용 예제

package inner02_static.myproduct;

public class MyProduct {
	
	private String prodNo;
	private String prodName;
	private String prodPrice; //prod_price
	
	//정적 내부 클래스 
	public static class TableInfo {
		public final static String[] HEADER_INFO = {"품번","품명","단가" };
		public final static int [] WIDTH_INFO= {100,400,100};
		
	}
	

}

package inner02_static.myproduct;

import java.util.Arrays;

public class MyProductExam {

	public static void main(String[] args) {
		// 객체 생성
//		public static class TableInfo {
//			public final static String[] HEADER_INFO = {"품번","품명","단가" };
//			public final static int [] WIDTH_INFO= {100,400,100};
//			
//		}

		// static 접근
		String[] HEADER_INFO = MyProduct.TableInfo.HEADER_INFO;
		int[] WIDTH_INFO = MyProduct.TableInfo.WIDTH_INFO;

		// 테이블 정보 출력
		System.out.println("헤더정보"+Arrays.toString(HEADER_INFO));
		System.out.println("바디정보"+Arrays.toString(WIDTH_INFO));

	}

}