# static final

[Java] final: 왜 static final이라고 써요?
final 부제: 왜 static final이라고 써요? 상수를 정의할 때 숫자를 코드에 때려박아야 할 때(?)가 종종 생기는데, 이럴 땐 여러가지를 고려해서 상수를 애용한다. 그런데 이상하게 Java에서는 상수 키워드가 빨리 익숙해지지 않아서 인터넷 서핑을 하는 일이 잦다. (const에 익숙하다보니...) > final은 해당 entity가 오로지 한 번 할당될 수 있음을 의미한다. final 키워드를 잊지 말자! 왜 static final? 그런데 상수를 설명할 때 static final 키워드로 설명하는 예제가 많아서 관련하여 추가로 찾아보았다. > 출처: 왜 자바에서 final 멤버 변수는 관례적으로 static을 붙일까?

제한자의 종류와 쓰임
💡 제한자란? 클래스, 변수, 메소드의 선언부에 사용되어 부가적인 의미를 부여 제한자는 접근 제한자와 그 외 제한자로 나뉨 하나의 대상에 여러 개의 제한자를 조합해서 사용 가능 (단, 접근제한자는 단 하나만 사용 가능) 접근제한자(Access Modifier) 객체의 멤버에세 접근 제한 기능을 부여하는 것 다른 객체에서 참조할 수 없거나 있게 만든다. 01. 종류 public : 모든 접근을 허용 protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용 (자식 클래스 허용) default : 같은 패키지(폴더)에 있는 객체들만 허용 private : 현재 객체 내에서만 허용
Java - 인스턴스 멤버, 정적 멤버
클래스 = 객체의 설계도인데, 클래스 멤버는 당연히 객체에도 포함되어 있어야 함 >하지만 이것이 효율적인가? 클래스로부터 객체는 하나가 아니라 여러 개가 만들어질 수 있음 >이 경우 클래스 멤버들을 객체마다 모두 가지고 있을 필요가 있는가? 만약 객체마다 필드값이 달라야 한다면 해당 필드는 객체마다 가지고 있는 것이 맞음. >but 객체의 필드값이 모두 같아야 한다면 이 필드를 객체마다 가지고 있을 필요가 있는가? 오히려 이런 필드는 한 곳에 위치시키고 객체들이 공유하는 것이 좋을 수 있음 자바는 이런 경우를 위해 클래스 멤버를 인스턴스 멤버와 정적 멤버로 구분해서 선언할 수 있도록 함. 인스턴스 멤버 - 객체마다 가지고 있는 멤버 정적 멤버 - 클래스에 위치시키고 객체들이 공유하는 멤버 인스턴스 멤버와 this 인스턴스 멤버 page 필드와 setPrice() 메소드는 인스턴스 멤버이므로 외부 클래스에서 사용하기 위해선

final 필드 / 상수(static final) / final 클래스 / final 메서드
final 필드 초기값이 저장되면 최종값이 되어서 프로그램 실행 도중 수정을 할 수 없는것.   final 필드 선언   ex) final 필드 선언 및 초기화 예시 final 필드인 nation과 ssn은 값 수정이 불가능하다.   상수(static final) 불변의 상수 값. 객체마다 저장이 되지않고 클래스에만 포함된다. 한번 초기값이 저장되면 변경할 수 없다.   상수 선언   상수 특징 상수의 이름은 모두 대문자로 작성하는것이 관례. 서로 다른 언어가 혼합된다면 스네이크 케이스 _ 로 연결해준다.   final 클래스 클래스를 선언할 때 class 앞에 final 키워드를 붙이면 상속할 수 없는 클래스가 된다. 즉 final 클래스는 부모 클래스가 될 수 없다.   final 클래스 선언   ex) final 클래스 예시 ![
제한자
[ static ] : '고정된'이라는 의미의 정적멤버. 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드. 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버. 사용처 : 필드를 선언할 때, 객체마다 가지고 있어야 할 데이터는 인스턴스 필드로 선언하고 공용 데이터라면 정적 필드로 선언. 정적멤버 사용 : new 클래스 생성 없이 클래스 이름을 바로 호출. (클래스명.정적메소드) 정적 초기화 블록 : 정적 필드는 초기값을 주는 것이 보통이나, 계산이 필요한 초기화 작업 시 정적 초기화 블록을 생성. 주의점 : static은 객체없이도 실행되기에, 내부에 인스턴스 필드나 인스턴스 메소드 사용불가. 객체 자신 참조인 this도 사용불가. static은 static끼리만 사용 가능. static에서 인스턴스 멤버를 사용하고 싶다면, new 클래스 선언 후 사용. [final] : final 필드는 초기값이 저장되면 최