///////
Search
💫

Java final 키워드에 대해서 설명해주세요. 각각의 쓰임에 따라 어떻게 동작하나요? (Class, Variable)

final 키워드

변수(variable), 메서드(method), 또는 클래스(class)에 사용할 수 있다
어떤 곳에 사용되냐에 따라 다른 의미를 가진다

1. final 변수

final이 붙은 변수는 값을 수정할 수 없다
수정될 수 없기 때문에 초기화 값은 필수적이다
초기화 전에 사용하면 컴파일 에러가 생긴다
final int number = 2;
Java
복사
상수라고도 부른다
get 만 가능하다
객체에 대한 참조인 경우, 최초 참조하는 객체 이외의 다른 객체를 참조할 수 없다
참조된 객체의 메소드를 통해 객체 자체의 값은 바꿀 수 있다
객체의 재할당을 막는다
→ 객체 자체가 불변은 아니다
final Person person = new Person("아무개"); person = new Person("어배추고양이") // Compile Error person.setName("어배추고양이"); // 객체의 값을 바꿀 수 있다
Java
복사

2. final 클래스

final이 붙은 클래스는 상속(Inheritance)이 불가능한 클래스가 된다
다른 클래스에서 상속해 재정의를 할 수 없다
ex. Integer와 같은 Wrapper 클래스
subclass를 만들 수 없다
라이브러리 형태의 프로젝트를 작성할 때 주로 사용
final class Person { String name; } // 상속 불가능 class Doctor extends Person { }
Java
복사

3. final 메서드

final 이 붙은 메서드는 해당 메서드를 오버라이드하지 못한다
→ 재정의가 불가능하다
라이브러리 형태의 프로젝트를 작성할 때 주로 사용
public class Person { String name = ""; public void setName(String name) { this.name = name; } } public class Doctor extends Person { // Compile Error public void setName(String name) { this.name = "Doctor " + name; } }
Java
복사