Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 인터페이스 변수가 기본적으로 static이면서 final인 이유

인터페이스(Interface)는 구현 방법이 아니라 행동에 대한 규약(protocol)을 정의하는 역할을 합니다. 즉, 어떤 클래스가 인터페이스를 구현(implement)한다는 것은 해당 인터페이스가 정의한 규약을 그대로 따르겠다는 의미입니다.


그렇다면 왜 자바에서는 인터페이스의 변수가 자동으로 static이고 final로 선언될까요? 각각의 이유를 살펴보겠습니다.


1. 인터페이스 변수가 static인 이유


자바의 인터페이스는 그 자체로 객체(인스턴스)를 생성할 수 없습니다. 인스턴스가 존재하지 않기 때문에 변수 값도 반드시 정적(static) 컨텍스트, 즉 객체와 무관하게 접근 가능한 영역에 할당되어야 합니다.


  • 인터페이스는 스스로 인스턴스화(instantiate)될 수 없습니다.
  • 따라서 변수의 값을 저장하려면 인스턴스 없이도 존재할 수 있는 static 변수여야 합니다.

2. 인터페이스 변수가 final인 이유


final 제어자는 인터페이스 변수에 할당된 값이 재할당될 수 없는 진짜 상수(true constant)임을 보장합니다. 다시 말해, 인터페이스에는 상수만 선언할 수 있으며 인스턴스 변수는 선언할 수 없습니다.


  • final 키워드 덕분에 한 번 초기화된 값은 변경할 수 없습니다.
  • 인터페이스는 오직 상수(constant)만 가질 수 있으며, 가변적인 인스턴스 변수를 가질 수 없습니다.

인터페이스 선언 템플릿


interface interfaceName{
   // 원하는 만큼의 final, static 변수 선언
   datatype variableName = value;
   // 원하는 만큼의 추상 메서드 선언
   returntype methodName(list of parameters or no parameters);
}

정리하면, 인터페이스 변수는 인스턴스 생성이 불가능하기 때문에 static이어야 하고, 값의 일관성과 불변성을 유지하기 위해 final이어야 합니다. 이 두 특성이 결합되어 인터페이스 변수는 항상 public static final 상수로 동작하게 됩니다.