Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- addhooks
- JanusGateway
- ErrorResponse
- RouteLocator
- VARCHAR (1)
- PersistenceContext
- tolerated
- 개성국밥
- terminal
- Spring Batch
- JanusWebRTC
- gitflow-shFlags
- 자원부족
- 깡돼후
- pytest
- 코루틴 빌더
- preemption #
- PytestPluginManager
- 코루틴 컨텍스트
- table not found
- JanusWebRTCGateway
- 달인막창
- 겨울 부산
- python
- taint
- mp4fpsmod
- JanusWebRTCServer
- kotlin
- Value too long for column
- vfr video
Archives
너와 나의 스토리
[Java] static vs final vs static final 본문
반응형
Static
- Static 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메서드를 말한다.
public class Calculator {
String mutableStr;
static int num = 3;
void setMutableStr(String str){
this.mutableStr = str;
}
String getMutableStr(){
return this.mutableStr;
}
static int plus(int x, int y){
return x+y;
}
}
- 위와 같이 작성된 클래스는 다음과 같이 사용할 수 있다.
- 인스턴스 필드를 사용하지 않아도 된다면, 정적 메서드로 선언하여 사용
int initNum = Calculator.num;
int res = Calculator.plus(1,2);
- 인스턴스 필드를 사용하면 인스턴스 메서드로 선언
Calculator calculator = new Calculator();
calculator.setMutableStr("hello");
System.out.println(calculator.getMutableStr());
// System.out.println(Calculator.getMutableStr()); <- 정적 메서드로 호출 불가
- 정적 초기화 블록(Static block)
- static 필드의 복잡한 초기화 작업을 위한 static block
- 참고: hororolol.tistory.com/549?category=939959
- 싱글톤
- 전체 프로그램에서 단 하나의 객체만을 만들도록 보장
- 참고: hororolol.tistory.com/550?category=939959
Final
- final field: 초기값이 최종적인 값(프로그램 실행 도중 변경될 수 없음)
- final class: 부모 클래스가 될 수 없다(상속 불가)
- 자식 클래스 생성 불가
- final method: overriding 불가
- 부모 클래스에서 특정 메서드를 final method로 선언해두면, 자식 클래스는 이를 오버라이딩할 수 없다.
- 주는 대로 써야 함 ㅎ
- static or static final과의 차이점
- final로 선언된 필드는 객체를 선언해서 그 인스턴스로 접근해야 한다.
Static final
- static final field는 객체마다 저장되지 않고, 클래스에만 포함된다.
- static field처럼 static field 필드도 정적 메서드로 선언해서 사용 가능하다
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java] 익명 객체(Anonymous Object) (0) | 2021.04.20 |
---|---|
[Java] 중첩 클래스와 중첩 인터페이스 (0) | 2021.04.19 |
[Java] 추상 클래스 / 인터페이스 (2) | 2021.04.13 |
[Java] 어노테이션(Annotation) 만들고 적용하는 방법 (0) | 2021.04.07 |
[Java] 싱글톤(Singleton)을 만들자! (0) | 2021.04.07 |
Comments