자바에서 자주 사용되는 핵심 키워드인 final, static, this, super는 각각 역할이 명확하며, 객체지향 프로그래밍 개념과도 깊이 연결되어 있다.
변경 불가를 의미하는 키워드 (변수, 메서드, 클래스에 사용 가능)
| 사용 위치 | 의미 |
|---|---|
| 변수 | 값 변경 불가 (상수) |
| 메서드 | 오버라이딩 금지 |
| 클래스 | 상속 금지 |
final int MAX = 100; // 상수
final class A {} // 상속 불가
class B {
final void print() { // 오버라이딩 불가
System.out.println("Hello");
}
}
클래스 단위로 공유되는 정적 멤버를 정의할 때 사용
클래스명.변수, 클래스명.메서드)static 변수는 모든 인스턴스가 공유static 메서드는 인스턴스 변수 사용 불가 (this 사용 불가)class Counter {
static int count = 0;
Counter() {
count++;
}
static void showCount() {
System.out.println("생성된 객체 수: " + count);
}
}
현재 객체 자기 자신을 가리키는 키워드
this())class Person {
String name;
Person(String name) {
this.name = name; // 멤버 변수와 지역 변수 구분
}
void introduce() {
System.out.println("저는 " + this.name + "입니다.");
}
}
부모 클래스의 멤버를 참조할 때 사용
class Parent {
void greet() {
System.out.println("안녕 (부모)");
}
}
class Child extends Parent {
@Override
void greet() {
super.greet(); // 부모 메서드 호출
System.out.println("안녕 (자식)");
}
}
| 키워드 | 의미/용도 | 사용 위치 |
|---|---|---|
final | 변경 불가 (상수, 오버라이딩 금지, 상속 금지) | 변수, 메서드, 클래스 |
static | 클래스 단위로 공유, 객체 없이 사용 가능 | 변수, 메서드, 블록 등 |
this | 현재 객체 참조, 멤버 구분, 생성자 연결 등 | 인스턴스 메서드, 생성자 |
super | 부모 클래스 참조 (멤버, 생성자) | 하위 클래스 내부 |