[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
Static와 final
- 클래스, 필드, 메소드에 모두 적용할 수 있는 키워드이며 각 위치에 따라 다른 의미를 가짐.
- static
- 정적 키워드로 정적 필드, 정적 메소드를 선언할 때 사용
- final
- 필드에 정의할 경우 초기 한번의 초기화만 가능하여 이후에는 다른 값을 대입할 수 없음.
🚨 static,final 키워드가 어느 위치에 있느냐에 따라 그 기능이 다른 만큼 정확히 이해하고 사용해야 함.
final
- 클래스, 필드, 메소드, 지역변수, 파라미터에 적용할 수 있습니다.
- 클래스에 final : 상속을 허용하지 않음.
- 메소드의 final : 오버라이딩 금지
- 필드, 지역변수, 파라미터에 final : 한번 초기화한 이후에는 다른 값으로 변경할 수 없음.
- final 필드의 초기화 방식
- 필드 선언 시점의 초기화
- 초기화 블록
- 생성자를 통한 초기화 방법
static field
- static 키워드가 적용된 필드 : 정적 필드 혹은 클래스 변수
- 정적 필드는 해당 클래스의 모든 인스턴스 객체들이 공유하는 변수 이면 이런 의미가 바로 클래스 변수
- 인스턴스화 할때마다 메모리가 할당되는 게 아니라 프로그램이 시작되면 static 메모리 영역에 잡혀서 공유하는 데이터
- 정적 필드는 객체의 인스턴스화(생성) 없이 클래스 이름으로 정적 필드에 접근 가능
- 단, 해당 정적 필드의 접근 지정자가 무엇인지에 따라 접근 방식에 차이가 있음.
( 메모리구조를 기반으로 잘 이해하기..!)
사용자 정의 상수
- static과 final이 동시에 적용된 필드
- 정적 필드에 final 키워드를 적용하여 값을 변경할 수 없도록 하는 것으로 사용자 정의 상수를 정의 가능
- 사용자 정의 상수는 정적 필드나 메소드의 접근과 마찬가지로 클래스 이름을 통해 접근하여 사용
- 사용자 정의 상수는 접근지정자의 범위에 따라 공유하는 범위가 결정
- 대문자,언더바_ 사용 하여 정의
static Method
- 정적 메소드는 static으로 선원된 메소드로써 인스턴스 없이도 호출 가능
- 정적 메소드는 인스턴스 필드에는 접근할 수 없고, 정적 필드에만 접근 가능
- 정적 메소드는 객체를 통해 사용될 수 있지만, 반드시 클래스명과 함께 사용
- 정적 메소드는 언제 사용?
- 객체의 상태에 접근하지 않고, 필요한 파라미터가 모두 명시적 파라미터인 경우(ex. Math.pow)
- 클래스의 정적 필드에만 접근하는 경우
- 🚨인스턴스 필스/메소드와 비교 !
- 스태틱 필드 (클래스 변수)
- 스태틱 메소드 : 접근 가능
- 인스턴스 메소드 : 프로그램이 시작되며 이미 스태틱 필드의 메모리 공간이 할당되어 있기때문에 접근 가능
- 인스턴스 필드
- 스태틱 메소드 : 접근 불가 / 언제 어디서나 호출이 가능하나 인스턴스 필드는 객체화가 되어야지만 가능함
- 인스턴스 메소드 : 접근 가능
- 스태틱 메소드
- 스태틱 필드 : 접근 가능
- 인스턴스 필드 : 접근 불가
- 인스턴스 메소드 : 접근 불가 / 메소드안에 인스턴스 객체 생성 한 이후 에는 가능/ 클래스이름으로 호출/ this. 불가능
- 인스턴스 메소드
- 스태틱 필드 : 접근 가능 / this. 가능 (권장하지 않음)
- 인스턴스 필드 : 접근 가능
- 스태틱 필드 (클래스 변수)
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] 상속 과 오버라이딩 Overriding (0) | 2022.10.07 |
---|---|
[JAVA][기초] 패키지 Package & 패키지 구성 (0) | 2022.10.07 |
[JAVA][기초] Java 메모리 모델 (0) | 2022.10.05 |
[JAVA][기초] 생성자 Constructor (0) | 2022.10.05 |
[JAVA][기초] 메소드 Method , 오버로딩 Overloading (0) | 2022.10.04 |