[Java] final이란?

4173 단어 JavaJava

final 키워드는 entity를 딱 한번만 할당하는 것이다. 따라서 다시 할당하는 경우 error가 발생한다. final은 class, 메소드, 변수에 붙일 수 있고, 각 기능이 다르다.

1. final class

  • class 앞에 final 키워드를 붙이면 해당 class는 상속되지 않는다.
    public final class Fruit{
       ...
    }
    public class Apple extends Fruit { ... }	// error 발생

2. final 메소드

  • 메서드 앞에 final 키워드를 붙이면 해당 메소드는 더 이상 Overriding 할 수 없다.
  • 메소드 Overriding : 부모 class에서 이미 정의된 메소드를 자식 class에서 같은 이름을 가진 메소드로 재정의하는 것을 말한다.
    public final class Parent{
       protected final int getGrade() {...}
    }
    class Child extends Parent { 
    	protected int getGrade() {...}	// error 발생
    }

3. final 변수

  • 변수 앞에 final 키워드를 붙이면 해당 변수는 변경될 수 없다. 따라서 반드시 초기값을 정해줘야한다. 이때 원시변수일 때와 참조변수일 때 차이가 있다.
    - 원시 변수에 적용 시 : 해당 변수는 값을 변경할 수 없다.
    - 참조 변수에 적용 시 : 참조 변수가 heap 내의 다른 객체를 가리키도록 변경할 수 없다.
    public final class Parent{
       final int childNum = 4;	//반드시 초기값 설정
       void getBaby(){
       	childNum++;		//error 발생
       }
    }

[Reference]

https://gmlwjd9405.github.io/2018/08/06/java-final.html

좋은 웹페이지 즐겨찾기