변수에서의 final
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package a; 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; //이 부분의 주석을 풀게 되면 에러가 발생한다. final 이 붙으면 해당 변수의 값을 변경할 수 없다. } 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; } } | cs |
메소드에서의 final
1 2 3 4 5 6 7 8 | package a; class A{ final void b(){} } class B extends A{ // void b(){} //이 부분에서도 A클래스에 있는 final 형식의 b()메소드를 사용하지 못한다. } | cs |
클래스에서의 final
1 2 3 4 5 6 | package a; final class C{ final void b(){} } //class D extends C{} //클래스 이름에도 final이 붙으면 하위클래스에서 상속받을 수 없다 | cs |