final 필드 / 상수(static final) / final 클래스 / final 메서드

kmb·2022년 11월 3일
0

자바

목록 보기
10/31

final 필드

초기값이 저장되면 최종값이 되어서 프로그램 실행 도중 수정을 할 수 없는것.

 

  • final 필드 선언
final 타입 필드 [=초기값];

 
ex) final 필드 선언 및 초기화 예시

public class Person {

	final String nation = "KOREA";
    final String ssn;
    String name;
    
    public Person(String ssn, String name) {
    	this.ssn = ssn;
        this.name = name;
    }
}

public class PersonExmaple {

	public static void main(String[] args) {
    	
        Person p1 = new Person("123456-1234567", "홍길동");
        
        System.out.println(p1.nation);
        System.out.println(p1.ssn);
        System.out.println(p1.name);
        
        // p1.nation = "USA";
        // p1.ssn = "111111-2222222";
        p1.name = "놀부";
    }
}

final 필드인 nation과 ssn은 값 수정이 불가능하다.

 


상수(static final)

불변의 상수 값.
객체마다 저장이 되지않고 클래스에만 포함된다. 한번 초기값이 저장되면 변경할 수 없다.

 

  • 상수 선언
1. 초기값이 단순 값일 경우
static final 타입 상수명 [=초기값];

2. 초기값이 복잡 할 경우
static final 타입 상수명;

static {
 상수명 = 초기값;
}

 

  • 상수 특징

상수의 이름은 모두 대문자로 작성하는것이 관례.
서로 다른 언어가 혼합된다면 스네이크 케이스 _ 로 연결해준다.

static final double PI = 3.14159;

static final double EARTH_SURFACE_AREA;
static {
 EARTH_SURFACE_AREA = 10000000.1234;
}

 


final 클래스

클래스를 선언할 때 class 앞에 final 키워드를 붙이면 상속할 수 없는 클래스가 된다.
즉 final 클래스는 부모 클래스가 될 수 없다.

 

  • final 클래스 선언
public final class 클래스이름 { ... }

 

ex) final 클래스 예시
final 클래스인 Member 클래스는 상속을 할 수 없는것을 확인 할 수 있다.

 


final 메서드

메서드를 선언할 때 메서드 앞에 final 키워드를 붙이면 오버라이딩(Overriding) 할 수 없는 메서드가 된다.
즉 부모 클래스에서 final로 선언된 메서드는 부모 클래스를 상속받은 자식 클래스에서 다시 재정의 할 수 없다.

 

  • final 메서드 선언
public final 반환타입 메서드이름( [매개변수, ...] )  {...}

 
ex) final 메서드 예시
final 메서드인 stop( ) 메서드를 @Override 하여 재정의 할 수 없는것을 확인 할 수 있다.

 

참조

  • 이것이 자바다 (책)
profile
꾸준하게

0개의 댓글