로컬 클래스
- 생성자 또는 메소드 내부에서 다음과 같이 선언된 클래스
- 생성자와 메소드가 실행될 동안에만 객체를 생성할 수 있음
출처, 이것이 자바다
package ch09.sec04.exam01;
/*
* 로컬 클래스 : 생성자, 메소드 내부에 정의한 클래스.
* 생성자, 메소드 호출시에만 로컬 클래스 객체 생성이 이루어진다.
*/
public class A {
//생성자
A() {
class B {}
B b = new B();
}
//메소드
void method() {
class B {}
B b = new B();
}
}
package ch09.sec04.exam02;
/*
* 로컬 클래스 예제
*/
public class A {
//메소드
void useB() {
//로컬 클래스
class B {
int field1 = 1;
B() {
System.out.println("B-생성자 실행");
}
//인스턴스 메소드
void method1() {
System.out.println("B-method1 실행");
}
}
//로컬 객체 생성
B b = new B();
System.out.println(b.field1);
b.method1();
}
}
package ch09.sec04.exam02;
public class AExample {
public static void main(String[] args) {
//A 객체 생성
A a = new A();
//A 메소드 호출
a.useB();
}
}
package ch09.sec04.exam03;
/*
메소드내의 로컬 변수, 매개변수를 로컬 클래스에서 사용할 경우 로컬 변수및 매개 변수는 final특성을 갖게된다.
로컬클래스에서 사용 안 할 경우에는 final 특성이 없다. Java7이하에서는 final키워드 사용해야 함.
*
*/
public class A { // A a = new A(); a.method1(10);
public void method1(int arg) { // final int arg;
//로컬 변수(지역 변수)
int var = 1; //final int var = 1;
//로컬 클래스
class B {
//메소드
void method2() {
System.out.println("arg: " + arg);
System.out.println("var: " + var);
}
}
B b = new B();
b.method2();
//로컬변수 또는 매개변수 값 수정불가.
// arg = 3;
// var = 3;
}
}
'객체 지향 프로그래밍 - 중첩 선언과 익명 객체' 카테고리의 다른 글
익명 객체 (0) | 2023.01.25 |
---|---|
바깥 멤버 접근 (0) | 2023.01.25 |
정적 멤버 클래스 (0) | 2023.01.25 |
중첩, 인스턴스 멤버 클래스 (0) | 2023.01.25 |