프로그램을 짜다보면 코드가 중복되는 일이 발생하거나 프로그램을 만들고 나서 유지보수를 위해 많은 시간을 할애한다.

이러한 업무들의 효율을 높이기 위해 '클래스'를 사용하게 되는데

객체지향 프로그램의 특징인 캡슐화를 사용하여 다양한 '클래스들의 관리'를 수월하게 하는 것이 내부 클래스이다.

 

 

 

 

목차

  1. 내부 클래스란?
  2. 인스턴스 클래스(instance class)
  3. 정적 클래스(static class)
  4. 지역 클래스(local class)
  5. 익명 클래스(annonymous class)
  6. 예제 (2개)

 

 

 

1. 내부 클래스란?

  • 객체 생성 없이도 내부 클래스가 외부 클래스의 멤버에 접근 가능
  • 캡슐화를 통해 코드를 단순화 가능
  • 내부 클래스는 클래스명 앞에 접근제어자 4가지(public, private, protected, default)를 모두 사용할 수 있다 (멤버로 취급되기 때문에)

 

 

 

 

2. 인스턴스 클래스 (instance class)

  • 클래스 안에 선언된 또 하나의 클래스로, 멤버변수 위치에 선언하여 인스턴스 멤버 처럼 사용
  • 외부 클래의 필드(클래스, 메소드, 변수, 객체) 사용가능

 

 

3. 정적 클래스 (static class)

  • 클래스 안에 선언된 또 하나의 클래스로, 멤버변수 위치에 선언하여 static 키워드를 붙여서 사용
  • 외부 클래스의 static 멤버처럼 다루어진다
  • 객체화 없이 클래스 사용 가능
  • 단, static을 붙인 멤버만 사용 가능 (인스턴스 멤버 사용 불가)

 

 

4. 지역 클래스 (local class)

  • 외부 클래스의 메소드 안에서 선언된 클래스
  • 메소드 안에서만 일회성으로 사용하기 위해 만든 클래스기 때문에 외부에서 사용 불가
  • 임시적으로 데이터들을 관리하기 위해서 만들어진다

 

 

5. 익명 클래스 (annonymous class)

1) 특징

  • 이름이 없는 클래스로, 이름 자리에 상위클래스 이름 또는 구현 인터페이스 이름을 쓴다
  • 객체 사용시에 클래스의 선언과 객체 생성이 동시에 이루어진다
  • 추상클래스, 인터페이스의 객체를 생성할 때 사용하기도 한다

 

 

2) 형태 

 

    2-1)

     new  상위클래스 이름 {

          // 멤버 선언

     }

 

    2-2)

     new  구현 인터페이스 이름 {

          // 멤버 선언

     }

 

 

6. 예제 (2개)

예제 1) 인스턴스 클래스, 정적 클래스, 지역 클래스

 

 

 

 

 

예제 2) 익명 클래스

'IT 언어 > Java' 카테고리의 다른 글

[Java] 오버로딩과 오버라이딩  (0) 2024.01.13
[Java] 상속 (extends) --*Q/A  (0) 2024.01.10
[Java] Getter와 Setter (정보은닉, 캡슐화)  (0) 2023.12.18
[Java] static 변수와 static 메소드  (0) 2023.12.15
[Java] final --*Q/A  (0) 2023.12.14

+ Recent posts