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
- &연산
- 전역변수
- 클론코딩
- entity
- 서버리스 #
- ES5
- 문서번호
- 으
- github
- literal
- TS
- 데이터베이스 #try #이중
- Strict
- Websocket
- 당근마켓
- 10px
- 0.75px border
- font-size
- jwt
- angular
- npm
- 컴포넌튼
- 1px border
- TypeScript
- ZOOM
- 타입스크립트
- Props
- 0.25px border
- es6
- 0.5px border
Archives
- Today
- Total
복잡한뇌구조마냥
[JAVA] 내부클래스 본문
내부 클래스
- 클래스 안에 선언된 클래스
1. 중첩클래스 ( 인스턴스 클래스 )
- 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우
public class InnerExam {
class Cal{
int value = 0;
public void plus(){
value++;
}
}
public static void main(String[] args) {
calcExam cal = new calcExam();
calcExam.Cal cal1 = cal.new Cal();
cal1.plus();
System.out.println(cal1.value);
}
}
2. 정적 중첩 클래스 ( static 클래스 )
- 내부 클래스가 static으로 정의된 경우
public class InnerExam2 {
static class Cal{
int value = 0;
public void plus(){
value++;
}
}
public static void main(String[] args) {
InnerExam2.Cal cal = new InnerExam2.Cal();
cal.plus();
System.out.println(cal.value);
}
}
3. 지역 중첩 클래스 ( 지역 클래스 )
- 메소드 안에 클래스를 선언한 경우
public class InnerExam3 {
public void exec(){
class Cal{
int value = 0;
public void plus(){
value++;
}
}
Cal cal = new Cal();
cal.plus();
System.out.println(cal.value);
}
public static void main(String[] args) {
InnerExam3 cal = new InnerExam3();
cal.exec();
}
}
4. 익명클래스 ( 익명 중첩 클래스 )
- 추상 클래스를 상속받는 클래스를 만들 필요가 없을 경우
- 추상클래스를 상송 받는 클래스가 해당 클래스에서만 사용되고 다른 클래스에서 사용되지 않는 경우
// Action
public abstract class Action {
public abstract void exec();
}
// MyAction
public class MyAction extends Action {
@Override
public void exec() {
System.out.println("MyAction");
}
}
public class InnerExam4 {
public static void main(String[] args) {
// 추상클래스 사용법
Action action0 = new MyAction();
action0.exec();
// 익명클래스 사용법
Action action = new Action() {
@Override
public void exec() {
System.out.println("익명클래스");
}
};
action.exec();
}
}
- 생성자 다음에 중괄호를 열고 닫고 나오면, 해당 생성자 이름에 해당하는 클래스를 상송받는 익명의 객체를 만듬
- 괄호 안에는 메소드를 구현하거나 메소드를 추가할 수 있음.
- 예시와 같이 MyAction으로 추상클래스를 선언하는 방식 대신에 Action을 내부에서 익명의 클래스로 선언해서 사용
- 외부 클래스에서 사용하지 않고 바로 사용하는 경우에 적합함.
LIST
'BE > JAVA' 카테고리의 다른 글
[JAVA] java.lang + 오토박싱 (1) | 2025.06.09 |
---|---|
[JAVA] 예외 처리 ( Exception, Throws, 커스텀 Exception ) (1) | 2025.06.07 |
[JAVA] 오버라이딩, 클래스 형변환 (1) | 2025.06.06 |
[JAVA] 접근제한자 (1) | 2025.06.04 |
[JAVA] 오버로딩 (1) | 2025.06.01 |