final?
1. final 변수
- 상수를 표현하기 위한 예약어.
- 마지막의 뜻 처럼 선언한 그대로 사용하라는 의미.
- 변수를 선언과 동시에 초기화하며 이후에 값을 수정할 수 없다.
public class AClass { Integer i; Integer j; static int TEMP = 3.14; // final 선언 static final double PI = 3.14; // 생성자 public AClass(Integer i, Integer j) { super(); this.i = i; this.j = j; } public void sum(){ // ERROR 발생. AClass.PI = 10; System.out.println(this.i + this.j); } } | cs |
2. final 메소드
- 오버라이딩이 불가능.
- 상속 받은 그대로 사용해야 함.
public class AClass { Integer i; Integer j; static int TEMP = 10; // 생성자 public AClass(Integer i, Integer j) { super(); this.i = i; this.j = j; } // final 메소드 선언 public final void sum(){ System.out.println(this.i + this.j); } } public class BClass extends AClass{ public BClass(Integer i, Integer j) { super(i, j); // TODO Auto-generated constructor stub } // ERROR 발생 @Override public void sum() { // TODO Auto-generated method stub super.sum(); } } | cs |
3. final 클래스
- 상속이 불가능.
- 하위클래스를 만들 수 없다.
public final class AClass { Integer i; Integer j; static int TEMP = 10; // 생성자 public AClass(Integer i, Integer j) { super(); this.i = i; this.j = j; } public void sum(){ System.out.println(this.i + this.j); } } // ERROR 발생 public class BClass extends AClass{ public class BClass extends AClass{ public BClass(Integer i, Integer j) { super(i, j); // TODO Auto-generated constructor stub } } | cs |