내부 클래스(Inner Class)
내부 클래스는 클래스 내부에 정의되는 클래스로, 클래스 안에 클래스를 포함하여 보다 복잡한 객체 구조를 설계하는 데 사용됩니다.
1. 내부 클래스의 개념
내부 클래스는 클래스 안에 정의되는 클래스로, 외부 클래스(Outer Class) 내부에서만 사용되는 클래스입니다.
내부 클래스는 외부 클래스와 강한 연관성을 가지며, 외부 클래스의 멤버에 접근할 수 있습니다.
내부 클래스는 코드의 가독성, 캡슐화, 데이터 은닉 등을 향상시키는 데 사용됩니다.
2 내부 클래스의 종류.
자바에서는 다음과 같은 종류의 내부 클래스를 지원합니다.
- 인스턴스 내부 클래스(Instance Inner Class)
- 외부 클래스의 인스턴스와 관련된 내부 클래스로, 외부 클래스의 인스턴스가 생성된 후에만 사용할 수 있습니다.
- 외부 클래스의 필드와 메서드에 접근할 수 있으며, 외부 클래스의 인스턴스에 대한 암묵적인 참조를 가집니다.
- 정적 내부 클래스(Static Inner Class)
- 외부 클래스의 정적 멤버로 정의되는 내부 클래스입니다.
- 외부 클래스의 인스턴스와 상관없이 사용할 수 있으며, 정적 필드와 메서드만을 가질 수 있습니다.
- 외부 클래스의 정적 멤버에만 접근할 수 있습니다.
- 지역 내부 클래스(Local Inner Class)
- 메서드 내부에서 정의되는 내부 클래스로, 해당 메서드 내부에서만 사용할 수 있습니다.
- 지역 변수와 메서드의 매개변수에 접근할 수 있습니다.
3. 내부 클래스의 활용
- 캡슐화와 은닉화
- 내부 클래스는 외부 클래스와 강한 연관성을 가지며, 외부 클래스의 멤버에 접근할 수 있습니다.
- 이를 통해 외부 클래스의 멤버를 캡슐화하고, 내부 클래스에서만 사용할 수 있도록 은닉화할 수 있습니다.
- 코드의 가독성
- 내부 클래스는 관련된 클래스를 하나의 단위로 묶어 구조화할 수 있어 코드의 가독성을 향상시킵니다.
- 관련된 클래스들을 한 곳에서 관리하고 유지보수하기 용이합니다.
- 이벤트 처리
- GUI 프로그래밍에서 이벤트 처리를 위해 내부 클래스를 자주 사용합니다.
- 외부 클래스의 이벤트 핸들러에서 내부 클래스를 정의하여 이벤트에 대한 구체적인 동작을 처리할 수 있습니다.
4. 예제 코드
// 외부 클래스
public class OuterClass {
private int outerField;
// 인스턴스 내부 클래스
public class InnerClass {
private int innerField;
public void innerMethod() {
outerField = 10; // 외부 클래스의 필드에 접근
innerField = 20; // 내부 클래스의 필드에 접근
}
}
// 정적 내부 클래스
public static class StaticInnerClass {
private static int staticInnerField;
public static void staticInnerMethod() {
staticInnerField = 30; // 내부 클래스의 정적 필드에 접근
}
}
// 메서드
public void outerMethod() {
// 지역 내부 클래스
class LocalInnerClass {
private int localInnerField;
public void localInnerMethod() {
outerField = 40; // 외부 클래스의 필드에 접근
localInnerField = 50; // 지역 내부 클래스의 필드에 접근
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.localInnerMethod();
}
// 실행 예제
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
inner.innerMethod();
StaticInnerClass.staticInnerMethod();
}
}
위 예제 코드는 외부 클래스인 OuterClass 안에 인스턴스 내부 클래스, 정적 내부 클래스, 그리고 메서드 내부에 지역 내부 클래스를 정의한 예제입니다.
각각의 내부 클래스에서는 외부 클래스의 필드에 접근하고, 내부 클래스의 필드에 값을 할당하거나 메서드를 호출할 수 있습니다.
내부 클래스는 객체 지향 프로그래밍에서 객체 구조를 설계하는 데 유용한 개념으로, 클래스 내부에 클래스를 포함시킴으로써 관련성이 있는 객체들을 효율적으로 구조화할 수 있습니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
'Java' 카테고리의 다른 글
Java - 16. 자바에서의 null이란? (0) | 2023.07.18 |
---|---|
Java - 15. 자바의 클래스(Class) (0) | 2023.07.17 |
Java - 13. 자바의 속성(Fields) - 객체의 상태를 표현하는 데이터 저장 공간 (0) | 2023.07.15 |
Java - 12. 자바의 생성자(Constructor) - 객체 초기화 (0) | 2023.07.14 |
Java - 11. 자바의 함수(function)과 메서드(method)와의 차이점 (0) | 2023.07.13 |
내부 클래스(Inner Class)
내부 클래스는 클래스 내부에 정의되는 클래스로, 클래스 안에 클래스를 포함하여 보다 복잡한 객체 구조를 설계하는 데 사용됩니다.
1. 내부 클래스의 개념
내부 클래스는 클래스 안에 정의되는 클래스로, 외부 클래스(Outer Class) 내부에서만 사용되는 클래스입니다.
내부 클래스는 외부 클래스와 강한 연관성을 가지며, 외부 클래스의 멤버에 접근할 수 있습니다.
내부 클래스는 코드의 가독성, 캡슐화, 데이터 은닉 등을 향상시키는 데 사용됩니다.
2 내부 클래스의 종류.
자바에서는 다음과 같은 종류의 내부 클래스를 지원합니다.
- 인스턴스 내부 클래스(Instance Inner Class)
- 외부 클래스의 인스턴스와 관련된 내부 클래스로, 외부 클래스의 인스턴스가 생성된 후에만 사용할 수 있습니다.
- 외부 클래스의 필드와 메서드에 접근할 수 있으며, 외부 클래스의 인스턴스에 대한 암묵적인 참조를 가집니다.
- 정적 내부 클래스(Static Inner Class)
- 외부 클래스의 정적 멤버로 정의되는 내부 클래스입니다.
- 외부 클래스의 인스턴스와 상관없이 사용할 수 있으며, 정적 필드와 메서드만을 가질 수 있습니다.
- 외부 클래스의 정적 멤버에만 접근할 수 있습니다.
- 지역 내부 클래스(Local Inner Class)
- 메서드 내부에서 정의되는 내부 클래스로, 해당 메서드 내부에서만 사용할 수 있습니다.
- 지역 변수와 메서드의 매개변수에 접근할 수 있습니다.
3. 내부 클래스의 활용
- 캡슐화와 은닉화
- 내부 클래스는 외부 클래스와 강한 연관성을 가지며, 외부 클래스의 멤버에 접근할 수 있습니다.
- 이를 통해 외부 클래스의 멤버를 캡슐화하고, 내부 클래스에서만 사용할 수 있도록 은닉화할 수 있습니다.
- 코드의 가독성
- 내부 클래스는 관련된 클래스를 하나의 단위로 묶어 구조화할 수 있어 코드의 가독성을 향상시킵니다.
- 관련된 클래스들을 한 곳에서 관리하고 유지보수하기 용이합니다.
- 이벤트 처리
- GUI 프로그래밍에서 이벤트 처리를 위해 내부 클래스를 자주 사용합니다.
- 외부 클래스의 이벤트 핸들러에서 내부 클래스를 정의하여 이벤트에 대한 구체적인 동작을 처리할 수 있습니다.
4. 예제 코드
// 외부 클래스
public class OuterClass {
private int outerField;
// 인스턴스 내부 클래스
public class InnerClass {
private int innerField;
public void innerMethod() {
outerField = 10; // 외부 클래스의 필드에 접근
innerField = 20; // 내부 클래스의 필드에 접근
}
}
// 정적 내부 클래스
public static class StaticInnerClass {
private static int staticInnerField;
public static void staticInnerMethod() {
staticInnerField = 30; // 내부 클래스의 정적 필드에 접근
}
}
// 메서드
public void outerMethod() {
// 지역 내부 클래스
class LocalInnerClass {
private int localInnerField;
public void localInnerMethod() {
outerField = 40; // 외부 클래스의 필드에 접근
localInnerField = 50; // 지역 내부 클래스의 필드에 접근
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.localInnerMethod();
}
// 실행 예제
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
inner.innerMethod();
StaticInnerClass.staticInnerMethod();
}
}
위 예제 코드는 외부 클래스인 OuterClass 안에 인스턴스 내부 클래스, 정적 내부 클래스, 그리고 메서드 내부에 지역 내부 클래스를 정의한 예제입니다.
각각의 내부 클래스에서는 외부 클래스의 필드에 접근하고, 내부 클래스의 필드에 값을 할당하거나 메서드를 호출할 수 있습니다.
내부 클래스는 객체 지향 프로그래밍에서 객체 구조를 설계하는 데 유용한 개념으로, 클래스 내부에 클래스를 포함시킴으로써 관련성이 있는 객체들을 효율적으로 구조화할 수 있습니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
'Java' 카테고리의 다른 글
Java - 16. 자바에서의 null이란? (0) | 2023.07.18 |
---|---|
Java - 15. 자바의 클래스(Class) (0) | 2023.07.17 |
Java - 13. 자바의 속성(Fields) - 객체의 상태를 표현하는 데이터 저장 공간 (0) | 2023.07.15 |
Java - 12. 자바의 생성자(Constructor) - 객체 초기화 (0) | 2023.07.14 |
Java - 11. 자바의 함수(function)과 메서드(method)와의 차이점 (0) | 2023.07.13 |