티스토리 뷰

Back-end/Java

내부 클래스

douStory 2021. 8. 10. 08:53
728x90

인스턴스 내부클래스

클래스는 내부클래스와 외부클래스가 있습니다.

인스턴스 내부클래스는 외부클래스가 인스턴스로 사용되어야만 사용이 가능합니다.

내부클래스는 외부클래스가 선언되어야 사용가능하기때문에 static 선언은 할 수 없다. (오류난다)

외부클래스가 먼저 선언되어야 내부클래스가 사용이 가능하다.(외부클래스에 기생하고 있는 내부클래스)

 

정적 내부클래스

  • static으로 내부클래스를 선언해준다. (내부 변수에 static사용가능)
  • 먼저 튕겨져 나갔기 때문에 다른애들(외부클래스 선언 변수, 내부메소드에서 내부클래스에서 선언한 변수)를 못알아본다.

빨간색으로 표시된 부분 오류남,,

1) 정적 내부클래스는 미리 데이터 풀에 올라갑니다.. 외부클래스 생성과 무관하게 사용 가능합니다.
2) 하지만 먼저 올라가기 위해서는 변동 위험이 있는 (아직 선언 되지 않은) 외부 클래스 변수는 사용 할 수 없습니다.
3) 내부클래스의 정적 메소드는 외부 메소드 변수 사용이 불가능합니다.

static이 선언된 클래스 / 메소드 { } 밖에있는 변수사용 할 수 없다.. static 사용한 변수만 사용 가능하다.

 

 

 

지역 내부클래스

지역내부 클래스는 지역변수 처럼 메소드 내부에 클래스를 정의 하여 사용합니다.

따라서 이클래스는 메소드 안에서만 사용 가능합니다.

**익명클래스 (중요)

Runnable()로 사용하고 중괄호 뒤에 ';'를 붙인다 -> { };

익명클래스를 선언하는 2가지 방법이 있다.
1) retrun new 메소드{ }; 메소드 처럼 생겼지만.. { }; -> 익명클래스
2) 변수에 대입하고 중괄호 { }; -> 익명클래스 

모바일에서 화면을 띄울때 주로 활용한다.

 

 

'Back-end > Java' 카테고리의 다른 글

람다(Lambda)  (0) 2021.08.10
스레드  (0) 2021.08.10
컬렉션 프레임 워크(Map)  (0) 2021.08.09
컬렉션 프레임 워크(SET)  (0) 2021.08.09
JAVA 예외처리 개념  (0) 2021.08.05
댓글