Java final / static / this / super 키워드 정리

hyunnzl·2025년 4월 6일

자바

목록 보기
7/8
post-thumbnail

자바에서 자주 사용되는 핵심 키워드인 final, static, this, super는 각각 역할이 명확하며, 객체지향 프로그래밍 개념과도 깊이 연결되어 있다.



final

변경 불가를 의미하는 키워드 (변수, 메서드, 클래스에 사용 가능)

사용 위치의미
변수값 변경 불가 (상수)
메서드오버라이딩 금지
클래스상속 금지

예제

final int MAX = 100;      // 상수
final class A {}          // 상속 불가
class B {
    final void print() {  // 오버라이딩 불가
        System.out.println("Hello");
    }
}





static

클래스 단위로 공유되는 정적 멤버를 정의할 때 사용

  • 객체를 생성하지 않아도 접근 가능 (클래스명.변수, 클래스명.메서드)
  • static 변수는 모든 인스턴스가 공유
  • static 메서드는 인스턴스 변수 사용 불가 (this 사용 불가)

예제

class Counter {
    static int count = 0;

    Counter() {
        count++;
    }

    static void showCount() {
        System.out.println("생성된 객체 수: " + count);
    }
}





this

현재 객체 자기 자신을 가리키는 키워드

  • 멤버 변수와 지역 변수 이름이 겹칠 때 구분용
  • 현재 인스턴스를 다른 메서드에 넘길 때 사용
  • 생성자에서 다른 생성자를 호출할 때도 사용 (this())

예제

class Person {
    String name;

    Person(String name) {
        this.name = name; // 멤버 변수와 지역 변수 구분
    }

    void introduce() {
        System.out.println("저는 " + this.name + "입니다.");
    }
}





super

부모 클래스의 멤버를 참조할 때 사용

  • 부모 클래스의 메서드나 생성자 호출
  • 오버라이딩한 메서드에서 부모 메서드 호출 시 유용

예제

class Parent {
    void greet() {
        System.out.println("안녕 (부모)");
    }
}

class Child extends Parent {
    @Override
    void greet() {
        super.greet(); // 부모 메서드 호출
        System.out.println("안녕 (자식)");
    }
}





키워드 요약 정리

키워드의미/용도사용 위치
final변경 불가 (상수, 오버라이딩 금지, 상속 금지)변수, 메서드, 클래스
static클래스 단위로 공유, 객체 없이 사용 가능변수, 메서드, 블록 등
this현재 객체 참조, 멤버 구분, 생성자 연결 등인스턴스 메서드, 생성자
super부모 클래스 참조 (멤버, 생성자)하위 클래스 내부

0개의 댓글