JAVA

자바에서 final이란?

D_Helloper 2023. 5. 28. 20:15

final

상속/변경을 금지하는 것

final 필드(변수)

  • 실행되는 과정에서 한 번 값이 정해진 이후에는 값이 바뀌지 않도록 함
  • 10행과 28번 행에서 변수 PI의 값을 수정하려고 하지만 오류 발생
class Calculator {
    static final double PI = 3.14;
    int left, right;

    public void setOprands(int left, int right) {
        this.left = left;
        this.right = right;
        //final로 지정된 변수에는 한번 값이 할당되면 그 값을 바꿀 수 없기 때문에 오류가 발생한다.
        //Calculator.PI = 6;
    }

    public void sum() {
        System.out.println(this.left + this.right);
    }

    public void avg() {
        System.out.println((this.left + this.right) / 2);
    }
}

class Main {

    public static void main(String[] args) {
        Calculator c1 = new Calculator();
        System.out.println(c1.PI);
        //final로 지정된 변수에는 한번 값이 할당되면 그 값을 바꿀 수 없기 때문에 오류가 발생한다.
        //Calculator.PI = 10;
    }
}

final 메서드

  • 아래 코드는 클래스 B가, 클래스 A안에 final로 정의된 메서드 b를 상속하려 하기 때문에 에러 발생
class A
{
	final void b(){}
}
class B extends A
{
	void b(){}
}

final 클래스

  • 아래 코드는 클래스 D가 final로 선언된 클래스 C를 상속하려 하기 때문에 에러 발생
final class C
{
	final void b(){}
}
class D extends C{}

출처 : 생활코딩

https://edu.goorm.io/learn/lecture/41/바로실습-생활코딩-자바-java/lesson/39279/final