티스토리 뷰
1. final
- 필드 적용
:: 해당 필드의 값이 변하지 않음을 의미
:: 해당 값이 객체라면 객체 내부의 값은 변경 가능
final int[] FINAL_ARRAY = new int[]{1, 2, 3};
FINAL_ARRAY[0] = 10;
// 결과 = [10, 2, 3]
- 메서드 적용
:: 상속(Overriding) X
:: 해당 메서드가 꼭 한가지 구현으로만 사용되는 경우에 사용(Side-Effect 방지)
- 클래스 적용
:: 상속(extends) X
:: 디자인 패턴의 원칙인 "상속보다는 합성"
2. static
:: 인스턴스화 없이 바로 사용 가능
:: 정적으로 만듦
- 필드 적용 → 정적 필드
:: 속한 클래스의 인스턴스 없이 사용 가능한 필드 == 정적 필드
:: 보통 final과 같이 해서 사용
- 메서드에 적용 → 정적 메서드
:: 유틸리티 메서드의 경우 static으로 정의 + final도 같이 선언하여 사용
→ 파라미터값만 받아서 반환을 해주는 역할만 하므로
:: 이런 조합 말고 유틸리티 메서드에서는 static + 유틸리티 클래스에서는 final로
→ 클래스의 상속(extends)을 막아 오버라이딩을 막고
→ static을 통한 간편한 사용이 가능
- 클래스 적용 → 정적 클래스
:: 속한 클래스의 인스턴스 없이 사용 가능한 (Nested) 클래스 == 정적 (Nested) 클래스
:: 보통 inner 클래스는 non-static
:: 근데 static 키워드 명시 시 → 정적 클래스로 상위 클래스 인스턴스없이 사용 가능
OuterClass outerClass = new OuterClass();
// 일반 클래스 내 정적 메서드
// :: 객체를 통해 객체화(new InnerClass)를 한 후 메서드 호출 (정상사용 X)
outerClass.new InnerClass().publicMethod();
// 일반 클래스 내 정적 메서드 (정상사용 O)
// :: 정적 메서드가 일반 클래스에 있든,
OuterClass.InnerClass .publicMethod();
// 정적 클래스 내 정적 메서드 (정상사용 O)
// :: 정적 메서드가 정적 클래스에 있든 상관없다.
OuterClass.StaticInnerClass.publicMethod();
참조
ASAC 수업자료
'정리용 > java' 카테고리의 다른 글
[JAVA] 기초 5. Array와 Collection (0) | 2025.01.23 |
---|---|
[JAVA] 기초 4. inferface, abstract class (0) | 2025.01.23 |
[JAVA] 기초 2. 생성 방법 3가지 - (3) 정적 팩토리 메서드 (0) | 2025.01.23 |
[JAVA] 기초 2. 생성 방법 3가지 - (2) 빌더 (0) | 2025.01.23 |
[JAVA] 기초 2. 생성 방법 3가지 - (1) 생성자 (0) | 2025.01.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- asac#asac7기
- useMemo
- useContext
- react
- useRef
- useEffect
- asac7#asac
- asac7기
- ASAC
- memo
- ssh
- useState
- git
- useReducer
- acas#acas7기
- Nginx
- useLayoutEffect
- acac
- useCallback
- asac7
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함