Final

Fox·2023년 12월 29일
0
post-thumbnail

Final 이란?

정의

  • final은 Java에서 사용하는 키워드이며, 한 번만 할당할 수 있는 엔티티를 정의할 때 사용한다.
  • 즉, 한 번 값을 넣어두면 절대 바뀌지 않는 상수이다.
  • final변수 이름은 모두 대문자를 쓰는 것이 기본 코딩 스타일이다.

final은 클래스, 메서드, 변수에서 사용할 수 있다.


Final 사용

final 클래스

public final class Hyundai {내용 생략} //fianl 클래스

public class car extends Hyundai {내용 생략} // 상속 불가
  • 클래스에 final을 사용하게 되면 그 클래스는 최종상태가 되어 더 이상 상속이 불가능하다.
  • final클래스여도 필드는 setter를 이용해서 변경이 가능하다.

final 메서드

public class Parent {
    public final void printMessage() {
        System.out.println("부모 클래스");
    }
}

public class Child extends Parent { // 오버라이딩 불가능
    public void printMessage() {
        System.out.println("자식 클래스");
    }
}
  • 메서드에 final을 사용하게 되면 상속받은 클래스에서 부모의 final을 오버라이딩 할 수 없다.
  • 자신이 만든 메서드를 변경할 수 없게 하고 싶을 때 사용된다.

final 변수

public class Circle {
    public final double PI = 3.14;
    public final double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    // 변수 값 변경 불가
    public void calculate() {
        double area = PI * radius * radius;
        System.out.println("원의 넓이: " + area);
    }
}
  • final 변수는 한 번 값을 할당하면 수정할 수 없다.


static과 final의 궁합

  • final 변수를 쓰면 그 값을 계속 그대로 쓴다는 의미이다.
  • 계속 메모리 낭비할 거 없이 하나로 쭉 써도 되기 때문에 static과 final을 같이 쓰면 효율성이 높아져서 자주 쓰인다.

주의
blank final 변수는 인스턴스마다 다른 값을 갖는다, 이렇게 초기화가 다르게 된다면 static을 사용하지 않게 된다.


Blank Final

class BlankFinal {  

  
private final String name;  
  
public BlankFinal(String name){  

this.name = name;

 }

} 
  • final 변수를 선언과 동시에 초기화를 해주는 것이 아닌, 생성자에서 초기화를 해주는 것을 말한다.
  • 즉, private final String name = "강아지"를 하는 대신, 생성자에서 초기화시켜주는 것이다.











참고 : https://makemethink.tistory.com/184
참고 : https://caliou.tistory.com/167

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글