🔹 final
**“더 이상 바꿀 수 없다”**는 의미
적용 대상의미
| 변수 (Variable) | 한 번 값을 대입하면 변경 불가능 (상수처럼 동작) |
| 메서드 (Method) | 오버라이드(override) 불가능 |
| 클래스 (Class) | 상속 불가능 (즉, 부모가 될 수 없 |
final int MAX_SPEED = 120;
MAX_SPEED = 200; // ❌ 오류 — final 변수는 변경 불가
final class Car {}
class SportsCar extends Car {} // ❌ 오류 — final 클래스는 상속 불가
class Vehicle {
final void move() {
System.out.println("Vehicle moving");
}
}
class Bike extends Vehicle {
void move() {} // ❌ 오류 — final 메서드는 오버라이드 불가
}
static
**“객체가 아니라 클래스에 속한다”**는 의미
적용 대상 의미
| 변수 (Variable) | 모든 객체가 공유하는 값 (클래스 변수) |
| 메서드 (Method) | 객체 생성 없이 클래스 이름으로 호출 가능 |
| 블록 (Block) | 클래스 로딩 시 딱 한 번 실행 |
class Counter {
static int count = 0; // 모든 인스턴스가 공유
int id;
Counter() {
count++;
id = count;
}
static void printCount() {
System.out.println("총 객체 수: " + count);
}
}
public class Main {
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter.printCount(); // ✅ 클래스 이름으로 바로 호출
}
}
키워드 핵심 의미 주로 쓰이는 곳
| final | “변경 불가능” | 상수, 불변 메서드, 불변 클래스 |
| static | “공유, 전역적 속성” | 클래스 변수, 유틸 메서드 |
| static final | “모든 객체가 공유하는 상수” | 상수 선언 (public static final) |
'개발 공부 > Java-Spring' 카테고리의 다른 글
| 객체 지향 프로그래밍(OOP)의 특징 (0) | 2025.11.22 |
|---|---|
| 객체의 종류 (0) | 2025.11.20 |
| interface vs abstract class (0) | 2025.09.26 |
| 정적팩토리 메서드 (0) | 2025.08.15 |
| JVM 의 메모리 구조 (0) | 2025.08.15 |