-
java final 의미, 사용법Backend/Java 2022. 12. 27. 23:53
Java에서 final은 "불변성"을 확보하기 위해 존재한다.
즉, 클래스나 변수 앞에 final을 붙이면 처음 정의된 상태가 변하지 않는 것을 보장한다.
4가지 경우에 대해 final을 사용할 수 있다.
1. final 변수
final String hello = "Hello world";
final 키워드가 붙은 변수는 초기화 후 변경할 수 없다. 다음과 같이 변경하려고 하면 컴파일 에러가 발생한다.
final String hello = "Hello world"; hello = "See you around" // compile error!
2. final arguments (인자)
final로 선언된 인자는 메소드 내에서 변경이 불가능하다. 따라서 다음과 같이 final int로 선언한 number는 읽을 수 있지만, number = 2처럼 값을 변경하려고 하면 컴파일 에러가 발생한다.
public void func(final int number) { System.out.println(number); // number = 2; compile error! }
3. final 클래스
final class MJ { final String hello; MJ() { hello = "hello world"; } }
클래스에 final을 붙이면 다른 클래스가 상속할 수 없는 클래스가 된다. 다음과 같이 final 클래스를 상속하려고 하면 컴파일 에러 발생.
final class MJ { final String hello; MJ() { hello = "hello world"; } } class MMJ extends MJ() { // compile error! }
4. final 메소드
class MJ { final String hello = "hello world"; final String getHello() { return hello; } }
final 메소드는 Override가 안되도록 한다. 예를 들어 다음과 같이 MJ 클래스를 상속하는 MMJ 클래스에서는 getHello()를 재정의할 수 없다. Override하려고 하면 컴파일 에러가 발생한다.
class MJ extends MMJ { @Override String getHello() { // compile error ! return "See you MJ"; } }
요약
종류 불변 변수, 인자 값 변경 클래스 클래스 상속 X 메소드 메소드 오버라이드 X 'Backend > Java' 카테고리의 다른 글
Java의 Compile Process 자바의 컴파일 과정 (0) 2022.12.28 Java transpose function 구현 (0) 2022.12.01 인터페이스 vs 추상클래스 (0) 2022.11.23 객체지향 프로그래밍 정의, 장단점, 객체지향 프로그래밍 키워드 (0) 2022.11.15 객체지향프로그래밍 vs 절차지향프로그래밍 (0) 2022.11.15