스코프 (Scope)
스코프 (Scope)
스코프는 변수나 메서드가 유효하고 접근 가능한 범위를 의미합니다.
자바에서 스코프는 크게 두 가지로 나눌 수 있습니다: 블록 스코프와 클래스 스코프.
블록 스코프 (Block Scope)
변수의 스코프는 그 변수가 선언된 블록 내에서만 유효합니다.
블록은 중괄호 {}로 정의된 코드 영역을 의미합니다.
public class ScopeExample {
public void method() {
int x = 10; // x는 method() 메서드 내에서 유효
if (true) {
int y = 20; // y는 if 블록 내에서만 유효
System.out.println(x); // x와 y 모두 사용 가능
}
// System.out.println(y); // y는 유효하지 않음, 컴파일 오류
}
}
이 예제에서 x는 method() 메서드 전체에서 유효하고, y는 if 블록 내에서만 유효합니다.
클래스 스코프 (Class Scope)
클래스 변수(필드)와 메서드는 클래스 전체에서 유효합니다.
즉, 클래스의 모든 메서드에서 접근할 수 있습니다.
public class ClassScopeExample {
int classVariable = 30; // 클래스 스코프
public void method() {
System.out.println(classVariable); // 클래스 변수 접근
}
}
이 예제에서 classVariable은 ClassScopeExample 클래스의 모든 메서드에서 접근할 수 있습니다.
쉐도잉 (Shadowing)
쉐도잉 (Shadowing)
쉐도잉은 같은 이름의 변수가 서로 다른 스코프에서 선언될 때 발생하는 현상입니다.
쉐도잉이 발생하면, 내부 스코프의 변수가 외부 스코프의 변수를 "가리게" 됩니다.
즉, 내부 스코프에서는 외부 스코프의 변수가 아니라 내부 스코프의 변수가 참조됩니다.
public class ShadowingExample {
int x = 10; // 클래스 스코프 변수
public void method() {
int x = 20; // 메서드 스코프 변수, 클래스 변수 x를 쉐도잉
System.out.println(x); // 메서드 스코프 변수 x 출력 (20)
}
public static void main(String[] args) {
ShadowingExample example = new ShadowingExample();
example.method();
}
}
이 예제에서 method() 메서드 내의 x 변수는 클래스 스코프의 x 변수를 쉐도잉합니다.
메서드 내에서는 메서드 스코프의 x 변수(값이 20)가 참조되며, 클래스 스코프의 x 변수(값이 10)는 가려지게 됩니다.
'JAVA > 기타' 카테고리의 다른 글
[JAVA] 동일성(identity) 동등성(equality) 비교 : equals(), == (0) | 2024.09.05 |
---|---|
[JAVA] 카카오페이 결제 API 포트원 연동 - kakao pay (0) | 2024.07.22 |
[java] 카카오톡 로그인 연결하기 (2) | 2024.06.27 |
[java] MVC - Spring Boot 어노테이션 정리 (0) | 2024.06.21 |
[java] 스프링(Spring) , 스프링 부트(Spring Boot)란? (0) | 2024.06.20 |