본문 바로가기

카테고리 없음

[JAVA] abstract와 반대되는 final의 용도


변수에서의 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