본문 바로가기
STUDY/JAVA

final의 의미

by NOTEEE 2018. 1. 22.

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


'STUDY > JAVA' 카테고리의 다른 글

오버로딩  (0) 2018.01.22
상속이란?  (0) 2018.01.22
클래스 메소드  (0) 2018.01.22
클래스 멤버  (0) 2018.01.22
클래스와 인스턴스  (0) 2018.01.22