본문 바로가기

StackOverflow

[Java] 왜 Java의 인터페이스 내에 있는 변수는 기본적으로 static이고 final인가요?

http://stackoverflow.com/questions/2430756/why-are-interface-variables-static-and-final-by-default


Q: 왜 Java의 인터페이스 내에 있는 변수는 기본적으로 static이고 final인가요?

(역주: Class에는 내에는 변수를 당연히 선언할 수 있습니다. Interface 내에도 변수를 선언할 수는 있지만, 항상 static - 인터페이스 내에 단 하나만 존재 - 이고, final - 수정 불가 - 입니다. 즉 인터페이스에는 하드코딩으로만 변경할 수 있는 설정 값 등은 넣을 수 있습니다. 만약 인터페이스에 변수를 넣어야 할 경우라면, abstract class를 만들어 상속을 받는 쪽으로 설계를 변경하는 것을 고려해 보는게 좋습니다.)

(질문자: Jothi)

20
 
인터페이스 안에 변수를 선언하면 안됩니다. – cherouvim

A: 필립 샤우 씨가 쓴 "Java interface design FAQ" 책에 따르면, 아래와 같습니다.

인터페이스의 변수는 static(정적)인데, 그 이유는 인터페이스의 변수는 스스로 초기화 될 권한이 없기 때문입니다. 이 변수의 값은 static context 내에서 할당되어야 하는데, 이때는 아무 인스턴스도 존재하지 않는 시점입니다. final 제어자는 인터페이스의 변수에 할당된  값이 프로그램 코드에 의해 수정하는 것이 불가능함을 보장하여, 이 값이 항상 상수가 되도록 만들어줍니다.

링크

(답변자: cherouvim)


_

Why are interface variables static and final by default in Java?

shareeditflag




20upvote
 flag
You shouldn't put any variables inside Interfaces. – cherouvim

_

142down voteaccepted

From the Java interface design FAQ by Philip Shaw:

Interface variables are static because Java interfaces cannot be instantiated in their own right; the value of the variable must be assigned in a static context in which no instance exists. The final modifier ensures the value assigned to the interface variable is a true constant that cannot be re-assigned by program code.

source

shareeditflag