static 유무의 차이
1, static nested 클래스
-> 논리적으로 묶기 위해, class의 내부에 존재하며 outer 클래스의 접근은 여타 클래스와 동일
-> 차이점으로 static 멤버의 경우 Outer -> Inner , Inner -> Outer 모두 private static 멤버는 접근가능함.
: nested 클래스 안에 nested class 생성 불가
ex)아래와 같이 사용 불가
public class Test{
class A{
class B{
}
static class C{
//The member type C cannot be declared static; static types can only be declared in static or top level types
}
}
}
2, inner 클래스
a, local inner class (내부 클래스)
b, anonymous inner class(익명 클래스)
-> Outer 클래스의 private 한 요소들을 참조 가능하다.
public class A {
private int A = 10;
private static final int staticA = 10;
private void foo() {
System.out.println("A");
}
class B {
public void printPrivateMember() {
System.out.println( A);//print private A's method
foo();//call A's private method
}
}
static class C {
private static final int staticC = 30;
public void print() {
System.out.println("C : "+ staticA);//외부의 private한 static 멤버 까지 참조 가능.
}
}
public void print() {
System.out.println("A : "+ C.staticC);//반대로 내부의 private한 static 멤버 까지 참조 가능.
}
}
출처 : 자바의 신
'java' 카테고리의 다른 글
| System class 의 기본 기능 활용 (0) | 2019.09.16 |
|---|---|
| Deprecated, SuppressWarnings 예시 (0) | 2019.09.15 |
| StringBuilder, StringBuffer, CharSequence 용도 (0) | 2019.09.15 |
| throws 명령어와 예외 처리 방법 두가지 (0) | 2019.09.15 |
| Throwable 및 stack trace의 이해 (0) | 2019.09.15 |