final은 문자 그대로 마지막을 나타낸다는 의미로,


java에서 변화를 방지하기 위해서 이용되는 키워드이다.


final을 사용하는 곳은 필드(field), 메소드(method), 그리고 클래스(class) 3군데 이다.





#필드(field)


필드에 final을 붙이게 되면, 마지막 변수로


한번 변수에 값을 저장하면, 저장한 값을 바꾸지 않겠다는 것을 의미한다.


그렇기 때문에, final을 붙은 필드는 선언과 동시에 초기화를 해주는 것을 원칙으로 한다.


만약 선언과 동시에 초기화를 하지 않을 시에는 필드에 기본값이 들어가게 되고,


개발자가 다른 곳에서 필드를 초기화하더라도 그 값은 바뀔 수가 없기 때문이다.





#메소드(method)


메소드에 final을 붙이게 되면 오버라이딩(overriding)을 금하겠다는 것을 의미한다.


 + [오버라이딩(overriding)]


   : 오버라이딩이라는 것은 내가 상속을 통해 부모클래스가 가지고 있는 메소드들을 물려받았을 때,


     자식이 부모의 메소드가 마음에 들지 않아, 메소드의 코드를 재정의 하는 것을 의미한다.


     예를 들자면, 부모가 자식에게 천지갑을 물려줬는데 자식이 그 지갑이 마음에 들지 않아


     그 지갑을 악어지갑으로 바꾸었다고 말할 수 있다.





#클래스(class)


클래스에 final을 붙히게 되면, 상속을 금지한다는 의미이다.


상속은 블로그 내의 '클래스의 관계'에서 자세히 설명하였듯이 클래스끼리 is ~a관계를 이루는 것을 의미하는 데, 


이 관계를 이용하지 못한다는 것은 has ~a관계, 즉 가져다가 쓰는 클래스로 밖에 이용하지 못한다는 것을 의미한다.


기본적으로 모든 클래스들은 is~a관계와 has~a관계가 모두 제공되기 때문에


상황에 맞추어 둘 중에 선택이 가능하나, final클래스는 오로지 has~a관계만 이용할 수 있다. 

'JAVA' 카테고리의 다른 글

IntelliJ 설치  (0) 2018.10.26
cmd로 클래스 실행  (0) 2018.01.19
접근 지정자  (0) 2018.01.19
class간의 관계  (0) 2018.01.18
Class의 기본구조  (0) 2018.01.18

+ Recent posts