1.바깥 필드와 메소드
인스턴스 맴버 클래스는 바깥 클래스의 정적필드와 정적메소드에서는 사용될수없다.
package a14_NestedClass2;
public class ClassA {
//인스턴스 멤버클래스
class ClassB{}
//정적멤버 클래스
static class ClassC{}
//인스턴스 필드에서 둘다 가능
ClassB b1= new ClassB();
ClassC c1= new ClassC();
//인스턴스 메소드에서 둘다 가능
void method(){
ClassB b2= new ClassB();
ClassC c3= new ClassC();
}
//static 에서 인스턴스 맴버 클래스 사용불가
//static ClassB b3= new ClassB();
static ClassC c3= new ClassC();
static void method2(){
//ClassB b4= new ClassB();
ClassC c4= new ClassC();
}
}
2.맴버 클래스에서 사용제한
인스턴스 맴버 클래스는 밖의 모든 메소드랑 필드에 접근할수있지만
정적클래스에서는 인스턴스 필드와 메소드에 접근할수없다.
public class ClassA {
int a;
static int b;
//인스턴스 멤버클래스
class ClassB{
void method(){
a=1;
b=1;
}
}
//정적멤버 클래스
static class ClassC{
void method(){
//a=1;
b=1;
}
}
}
3.로컬클래스에서 사용 제한
매개변수와 로컬변수는 로컬 클래스 내부에서 사용할때 final 특성을 가지게된다.
매개변수와 로컬 변수 값을 변경하려고 하니 오류가 난다.
매개변수와 로컬변수가 로컬 클래스에서 사용되므로 자동으로 final 키워드를 가지게 된것을 알수있다.
4.This
중첩 클래스에서 외부클래스의 참조를 얻을려면 다음과 같이 사용한다.
바깥클래스.this.필드;
바깥클래스.this.메소드();
public class ClassA {
int a;
class ClassB{
void method(){
ClassA.this.a=1;
}
}
}
'Language > JAVA' 카테고리의 다른 글
[Java] 익명 객체(Anonymous Object) (0) | 2024.05.20 |
---|---|
[Java] 중첩클래스 인스턴츠 멤버,정적,로컬 클래스 (0) | 2024.05.19 |
[Java] 인터페이스 다형성 (0) | 2024.05.17 |