티스토리 뷰
1. final
- 필드 적용 | :: 해당 필드의 값이 변하지 않음을 의미 :: 해당 값이 객체라면 객체 내부의 값은 변경 가능 |
- 메서드 적용 | :: 상속(Overriding) X :: 해당 메서드가 꼭 한가지 구현으로만 사용되는 경우에 사용(Side-Effect 방지) |
- 클래스 적용 | :: 상속(extends) X :: 디자인 패턴의 원칙인 "상속보다는 합성" |
final int[] FINAL_ARRAY = new int[]{1, 2, 3};
FINAL_ARRAY[0] = 10;
// 결과 = [10, 2, 3]
더보기
final 필드 적용 예시
final int[] FINAL_ARRAY = new int[]{1, 2, 3};
FINAL_ARRAY[0] = 10;
// 결과 = [10, 2, 3]
상속 보다는 합성 예시
// 상속 : Inheritance
class Animal {
public void hello() {
// hello 로직이 바뀌었을 경우에 다른 Puppy 등의 객체에 영향을 준다 : 시부모님의 영향력
}
public void world() {
// Cat 에서 밖으로 노출 : 부모의 빚
}
}
// Inheritance
class Cat extends Animal {
public void cat() {
this.hello();
}
}
// 합성 : Composition
class CAnimal implements IAnimal {
public void hello() {
// ...
}
}
class BAnimal implements IAnimal {
public void hello() {
// ...
}
}
// Composition
class CCat {
// private CAnimal cAnimal = new CAnimal();
private IAnimal cAnimal = new BAnimal();
public void cat() {
cAnimal.hello();
}
}
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
- acac
- useMemo
- asac7#asac
- asac7기
- acas#acas7기
- react
- useEffect
- ssh
- useContext
- useState
- asac#asac7기
- memo
- asac7
- useRef
- git
- Nginx
- useCallback
- useReducer
- ASAC
- useLayoutEffect
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함