static vs final

김채원·2025년 3월 18일

static

  • 클래스 레벨에서 공유되는 변수
  • 객체 생성 없이 클래스 이름으로 접근 가능
  • 모든 인스턴스(객체)에서 공유되는 값
public class Member {
    public static int totalMembers = 0; // 모든 객체가 공유

    public Member() {
        totalMembers++;
    }
}

Member m1 = new Member();
Member m2 = new Member();
Member m3 = new Member();

System.out.println(Member.totalMembers); // 3 (모든 객체가 공유)

final

  • 값이 한 번 할당되면 변경 불가능하여 보통 상수화 시킬 때 사용
  • 클래스, 메서드, 변수 모두에 사용 가능
// 변수에 사용
public class Member {
    public final String name = "Katie";
}

// 클래스에 사용
public final class Member {
    // 이 클래스는 하위 클래스가 상속 불가능
}

// 메서드에 사용
public class Member {
    public final void showInfo() {
        // 이 메세드는 하위 클래스에서 오버라이딩 불가능
    }
}

private static final


모든 경우의 수

0개의 댓글