[JAVA] Inner Class와 Outer Class

2024. 3. 27. 09:57·JAVA

자바에서는 클래스 내부에 다른 클래스를 선언할 수 있다. 이러한 내부 클래스(inner class)는 외부 클래스(outer class) 내부에서만 사용되는 클래스이다. 내부 클래스를 사용하면 논리적으로 연관된 클래스를 그룹화하고 캡슐화할 수 있다.

 

1. 멤버 내부 클래스 (Member Inner Class): 외부 클래스의 멤버 변수와 마찬가지로 선언되는 클래스이다. 인스턴스화하기 전에는 외부 클래스의 인스턴스가 먼저 생성되어야 한다.

 

2. 정적 내부 클래스 (Static Nested Class): 내부 클래스에 static 키워드가 사용된 경우이다. 정적 내부 클래스는 외부 클래스의 인스턴스에 바인딩되지 않는다.

 

3. 지역 내부 클래스 (Local Inner Class): 메서드 내부에 선언되는 클래스로, 선언된 메서드 내에서만 사용된다.

 

4. 익명 내부 클래스 (Anonymous Inner Class): 이름이 없는 내부 클래스로, 클래스의 정의와 동시에 인스턴스를 생성하여 사용된다.

 

각 내부 클래스 유형은 특정한 상황에 유용하게 사용될 수 있다. 내부 클래스를 사용하여 코드를 구성함으로써 클래스 간의 관련성을 강화하고 코드의 가독성을 향상시킬 수 있다.

class OuterClass{
	int a = 10;
	static int b = 20;
	
	class InnerClass{
		int c = 30;
		static int d = 40; //JDK17부터 내부클래스에 static 변수 가능
		
		public void show() {
			System.out.println("a = " + a);
			System.out.println("b = " + b);
			System.out.println("c = " + c);
			System.out.println("d = " + d);
		}
	}
	
	//정적내부클래스
	static class InnerClass2{
		int e = 50;
		static int f = 60;
		public void show() {
//			System.out.println("a = " + a); //static 클래스는 외부클래스에 있는 인스턴스 변수에 접근 불가능
			System.out.println("b = " + b);
			System.out.println("e = " + e);
			System.out.println("f = " + f);
		}
	}
	
	public void disp() {
		//내부클래스가 가진 show 메서드 호출
		InnerClass in = new InnerClass();
		in.show();
		InnerClass2 in2 = new InnerClass2();
		in2.show();
	}
	
}

public class Ex8_InnerClass {
	
	public static void main(String[] args) {
		
		OuterClass outer = new OuterClass();
		outer.disp();
		
	}

}

 

저작자표시 (새창열림)

'JAVA' 카테고리의 다른 글

[JAVA] Generic Type  (0) 2024.03.28
[JAVA] Anonymous Inner Class  (0) 2024.03.27
[JAVA] Interface  (0) 2024.03.27
[JAVA] Abstract 예제  (0) 2024.03.26
[JAVA] Abstract  (0) 2024.03.26
'JAVA' 카테고리의 다른 글
  • [JAVA] Generic Type
  • [JAVA] Anonymous Inner Class
  • [JAVA] Interface
  • [JAVA] Abstract 예제
kwh_coding
kwh_coding
성장하는 괴물 성괴 김우형
  • kwh_coding
    코딩 일기
    kwh_coding
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • ERP Project
      • NAVER CLOUD Web DevOps
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • Notion
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    React
    Java
    git
    RDBMS
    javascript
    annotation
    gitbash
    Postman
    js
    html
    jsp
    brycpt
    Python
    github
    AdSP
    프로그래머스
    CORS
    정보처리기사
    web
    spring
    해시 암호화
    코딩테스트
    코딩
    node
    django
    eGov
    private network
    코테
    Tomcat
    SQLD
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kwh_coding
[JAVA] Inner Class와 Outer Class
상단으로

티스토리툴바