티스토리 뷰

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 수업자료

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함