Java

[Java] final

우니010 2021. 3. 14. 16:18
반응형

final 변수

package org.opentutorials.javatutorials.fanalTest;

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; //error
	}
	
	public void sum() {
		System.out.println(this.left + this.right);
	}
	
	public void avg() {
		System.out.println((this.left + this.right)/2);
	}
}

public class CalculatorDemo {

	public static void main(String[] args) {
		Calculator c1 = new Calculator();
		c1.setOperands(10, 20);
		c1.sum();
		c1.avg();
	}

}

final 로 정의 된 값을 변경하려면 에러가 난다.

 

final 메소드

package org.opentutorials.javatutorials.finals;
 
class A{
    final void b(){}
}
class B extends A{
    void b(){}
}

에러 난다.

final 메소드를 오버라이딩 할 수 없다.

 

final 클래스

package org.opentutorials.javatutorials.finals;
 
final class C{
    final void b(){}
}
class D extends C{}

에러난다.

 

final 메소드, final 클래스는 상속 할 수없다.

반응형