Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 배열
- asp.net
- Git_명령어정리
- 아파치톰캣
- 자바
- SQL_용어정리
- github
- 인덱스
- 다이어그램
- HTML
- 이클립스
- git
- DML
- Linux_명령어정리
- jsp
- 인스턴스
- CSS
- SQL
- JavaScript
- Spring_오류정리
- vb.net
- json
- MySQL
- spring
- workbench
- Linux
- Git_정리
- 자바스크립트
- java
- Spring_에러정리
Archives
- Today
- Total
데브마우스
[Java] 내부 클래스 정리 본문
내부 클래스는 클래스 안에 클래스를 작성하는 것입니다.
아래는 내부 클래스 사용 예제입니다.
class OuterClass{
int outer = 20;
class InnerClass {
int inner = 10;
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
// new OuterClass.InnerClass()라고 적을거라 예상했는데 oc.new InnerClass()로 인스턴스화시킵니다.
// 어찌보면 클래스 전에 문자열이오면 패키지 이름으로 인식하기때문에 new 이전에 외부 클래스 이름을 적는걸로 보입니다.
OuterClass.InnerClass ic = oc.new InnerClass();
System.out.println(ic.inner); // 출력: 10
}
}
내부 클래스는 클래스 안에서 외부 클래스의 멤버를 자유롭게 접근할 수 있습니다. (접근제한자가 private 일지라도요!)
주의할 점은 '클래스 안에서' 자유롭게 접근할 수 있습니다. main 메서드처럼 다른 메서드 안에서 동적으로 외부 클래스의 변수에 접근하는건 불가능합니다.
아래는 접근이 불가능한 코드 예제입니다.
// 접근이 불가능한 예제
class OuterClass{
int outer = 20;
class InnerClass {
int inner = 10;
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
OuterClass.InnerClass ic = oc.new InnerClass();
System.out.println(ic.outer);
}
}
내부 클래스도 일반 클래스처럼 인스턴스와 static이 적용됩니다.
'Java > Java: 문법 정리' 카테고리의 다른 글
[Java] 예외 발생하는 throw와 예외를 던지는 throws 정리 (0) | 2024.01.13 |
---|---|
[Java] 예외 처리(try-catch-finally) 정리 (0) | 2024.01.13 |
[Java] 다형성 정리 (0) | 2024.01.13 |
[Java] 접근제어자 정리 (0) | 2024.01.12 |
[Java] package와 import 정리 (0) | 2023.12.20 |