JAVA :: final 키워드의 동작

태그
Java
날짜
2025/02/25
2 more properties

Final

final 키워드는 어디에 사용하냐에 따라 다른 의미를 갖습니다.
공통적으로 무언가를 제한하는데 의미를 갖습니다.

변수

변수에 final 을 붙이면 해당 변수는 수정할 수 없다는 의미를 갖습니다.
변수를 수정할 수 없기 때문에 초기화 값이 필수적입니다.
객체의 변수라면 생성자 또는 static 메소드를 통한 초기화는 허용됩니다.
public class Service { public void variableFinal() { final int value = 4; value = 2; >> 컴파일 에러 final Person person = new Person("유재석"); person.setName("강호동"); >> OK person = new Person("박명수"); >> 컴파일 에러 } }
Java
복사

메소드

메소드에 final 을 붙이면 Override 할 수 없다는 의미를 갖습니다.
부모 객체가 갖는 메소드를 보존하고 싶을 때 사용합니다.
class Person { String name = "홍길동"; public final void printName() { System.out.println(name); } } class Studend extends Person { String class = "클래스"; 아래 메소드는 재정의할 수 없습니다. public void printName() { } }
Java
복사

클래스

클래스에 final 을 붙이면 해당 클래스를 다른 클래스가 상속할 수 없습니다.
원본 클래스의 불변성을 유지하는데 도움을 줄 수 있습니다.
Integer같은 Wrapper class 가 이에 해당합니다.
public final class Integer extends Number implements Comparable<Integer>, Constable, ConstantDesc { ... } public class Person extends Integer { << // Cannot inherit from final 'java. lang. Integer' }
Java
복사

Summery

변수
메소드
클래스
변수의 값 수정 불가능
메소드 Override 불가능
클래스 상속 불가능