Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

9.4 로컬 클래스 - 로컬 변수의 final 본문

이것이 자바다/09 중첩 선언과 익명 객체

9.4 로컬 클래스 - 로컬 변수의 final

빌드이너프 2024. 4. 4. 13:02

로컬 클래스

생성자 또는 메소드 내부에서 선언된 클래스

public class A {
  //생성자
  public A() {
    class B { } //로컬 클래스
  }
  
  //메소드
  public void method() {
    class B { } //로컬 클래스
  }
}

로컬 클래스에는 일반 클래스와 같이 필드, 생성자, 메소드 선언이 올 수 있다

정적 필드와 정적 메소드는 Java 17부터 선언 가능

 

로컬 변수

생성자 또는 메소드의 매개변수 또는 내부에서 선언된 변수

 

로컬 변수를 로컬 클래스에서 사용할 경우

로컬 변수는 final 특성을 갖게 되므로 값을 읽을 수만 있고 수정할 수 없게 된다

이것은 로컬 클래스 내부에서 값을 변경하지 못하도록 제한하기 때문

 

Java 8 이후부터는 명시적으로 final 키워드를 붙이지 않아도 되지만,

로컬 변수에 final 키워드를 추가해서 final 변수임을 명확히 할 수 잇다

package ch09.sec04.exam03;

public class A {
	public void method1(int arg) { // final int arg
		
		//로컬 변수
		int var = 1; //final int var = 1;
		
		//로컬 변수 수정 불가
//		arg = 3;
//		var = 3;
		
		//로컬 클래스
		class B {
			void method2() {
				//로컬 변수 읽기 가능
				System.out.println(arg);
				System.out.println(var);
				
				//로컬 변수 수정 불가능
//				arg = 2;
//				var = 2;
			}
		}
		
		//로컬 객체 생성
		B b = new B();
		//로컬 객체 메소드 호출
		b.method2();
	}
}