본문 바로가기
생활코딩/JAVA

생활코딩 - JAVA (final)

by Love of fate 2020. 12. 19.
728x90
반응형

Abstract가 상속을 가제하는 일종의 규제라고 한다면 final은 abstract와는 정반대되는 의미를 가지고 있다.
상속이나 변경을 금지하는 규제이기 때문이다.

[PI 멤버에 final을 지정]
pakage org.opentutorials.javatutorials.finals;

Class calculator{
static final double PI = 3.14;
int left, right;

public void setOperands(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(){
Systeem.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;
}
}

상수를 static으로 지정했던 이유는 바뀌지 않는 값이기 때문이었다. 공통적이라는 부분에서는 static을 쓸 수 ㅆ는데 “바뀌지 않는”에 대해서는 문법적인 또는 기능적인 지원이 없었다.
다시 말해 원한다면 PI 변수에 담긴 3.14라는 값을 사용하는 쪽에서 수정할 수도 있었다는것이다.
자바 언어가 가진 기능을 이용해 사용자가 이 값을 절대로 바꾸지 못하게 할 수 있다. 바로 그 때 사용하는 것이 final이다.
필드에 final을 지정하면 3.14라는 값이 지정된 PI 값은 한 번 설정된 이후로 바꿀 수 없는 상수가 된다. 고정된 값이 되는 것이다.

final의 의는 상속과 관련이 있다. 메소드가 final로 지정되면 해당 메소드는 오버라이딩할 수 없다.
필드나 메소드와 마찬가지로 클래스에도 final을 지정할 수 있다.

728x90
반응형

'생활코딩 > JAVA' 카테고리의 다른 글

생활코딩 - JAVA (다형성)  (0) 2020.12.29
생활코딩 - JAVA (인터페이스)  (0) 2020.12.19
생활코딩 - JAVA (Abstract)  (0) 2020.12.19
생활코딩 - JAVA (접근 제어자)  (0) 2020.12.19
생활코딩 - JAVA (패키지)  (0) 2020.12.13