/ JAVA

final (field,Static final(상수),
Class, Method)

  • 한번의 초기화로 인하여 값을 변경할수 없는 필드
  • 메서드를 호출해서 객체가 사용할수있도록 준비하는 역할 수행

CODE

public class Person {
    final String nation = "kr"; //값을 초기에 할당하거나
    final String ssn;

    public Person(String ssn) {//생성자 선언시 할당하거나
    this.ssn = ssn;              //final은 최초한번만 값대입가능
    }
}

상수 (Static final)

  • final 필드가 객체 마다 가지는 인스턴스 필드라고 하면
  • 상수는 객체마다 가지고있지 않고 메소드 영역에서 클래스별로 관리되는 정적 필드
  • 공용데이터로 관리

CODE

    static final dobule EARTH_RADIUS = 6400;
    //상수의 이름은 전부 대문자로 작성 단어와 연결시 _(언더바)

    static final double EARTH_SURFACE_AREA;

    static{
    EARTH_SURFACE_AREA = 4 * Math.PI *  EARTH_RADIUS *  EARTH_RADIUS;
}

final 클래스

  • 상속과 연관
  • 부모로 사용할 수 없는 클래스

CODE

    public final class A{} //A라는 final 클래스가 있을때
    ///////////////////////////////////////////////
    public class B extends A{} // A클래스가 final 클래스로 선언되어있어 상속을 받지못함 컴파일에러 발생

final 메소드

  • 상속과 연관
  • 자식이 재정의할 수 없는 메소드

CODE

public class Car{
    public int speed;

    public  void speedUp(){
        speed += 1;
    }
    public final void stop(){   //메소드도 final 클래스와 마찬가지로 final 메소드인 stop을 override하려고하면 컴파일 에러발생!
        System.out.println("차를 멈춤");
        speed =0;
    }
}

References.