[JAVA] final

Coastby·2022년 8월 7일
0

JAVA

목록 보기
19/33

final

추상 (abstract)이 상속을 강제하는 것이라고 하면 final은 상속/변경을 금지하는 규제이다.

○ final 필드

이전에 PI 값을 지정할 때 다른 클래스에서 값을 수정할 수 있었는데, 이를 규제하기 위해 final이라는 키워드를 쓸 수 있다. final로 지정을 하면 다른 메소드나 다른 클래스에서 변수의 값을 바꿀 수 없다.

class Calculator {
    static final double PI = 3.14;
    int left, right;
 
    public void setOprands(int left, int right) {
        this.left = left;
        this.right = right;
        //Calculator.PI = 6;
    }
 
    public void sum() {
        System.out.println(this.left + this.right);
    }
 
    public void avg() {
        System.out.println((this.left + this.right) / 2);
    }
}
 
public class CalculatorDemo1 {
 
    public static void main(String[] args) {
 
        Calculator c1 = new Calculator();
        System.out.println(c1.PI);
        //Calculator.PI = 10;
 
 
    }
 
}

○ final 메소드

final 메소드는 final 변수 만큼 사용 빈도가 높지는 않다. 아래의 코드는 final 메소드 b를 상속하려고 하기 때문에 오류가 발생한다.

class A {
	final void b () {}
}

class B extends A {
	void b () {}
}

//error
Cannot override the final method from A

○ final 클래스

final 클래스를 상속하려고 하고 있으며 이는 오류가 발생한다.

final class C{
    final void b(){}
}
class D extends C{}
profile
훈이야 화이팅

0개의 댓글