Java의 정적 변수와 최종 변수의 차이

Rupam Yadav 2023년10월12일
  1. Java의 정적 변수
  2. Java의 최종 변수
Java의 정적 변수와 최종 변수의 차이

이 튜토리얼은 static 키워드와 final 키워드의 차이점을 보여줍니다. 표 형식과 작업 예제의 차이점에 대해 논의해 보겠습니다.

static final
선언 중에는 정적 변수를 초기화할 필요가 없습니다. 선언할 때 최종 변수를 초기화해야 합니다.
정적 변수를 다시 초기화할 수 있습니다. 최종 변수는 다시 초기화할 수 없습니다.
중첩된 정적 클래스, 변수, 메서드 및 블록과 함께 사용됩니다. 클래스, 메서드 및 변수와 함께 사용됩니다.
정적 메서드는 다른 정적 메서드에서만 호출할 수 있습니다. 최종 메서드는 하위 클래스에서 재정의할 수 없습니다.

Java의 정적 변수

정적 변수나 메서드를 만들 때 객체가 아닌 클래스에 연결됩니다. 변수 또는 메서드는 전체 프로그램에 대해 동일한 참조를 공유합니다.

다음 프로그램에는 num 정적 변수를 포함하는 DummyClass 클래스와 dummyMethod()라는 정적 메서드가 있습니다. 다른 클래스에서 이 두 멤버에 액세스하려면 정적이기 때문에 DummyClass의 개체를 만들 수 없습니다.

클래스 이름을 사용하여 직접 호출합니다.

예시:

public class ExampleClass3 {
  public static void main(String[] args) {
    DummyClass.num = 5;
    System.out.println("Static variable value: " + DummyClass.num);
    DummyClass.dummyMethod();
  }
}

class DummyClass {
  public static int num = 0;

  public static void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

출력:

Static variable value: 5
Inside Static Dummy Method

외부 클래스에 대한 참조 없이 정적 키워드를 사용하는 중첩 클래스. static 키워드를 사용하여 클래스 내부에 내부 클래스를 만들 수 있습니다.

아래 예제에서는 DummyClass 클래스가 있고 그 안에 InnerClass라는 정적 클래스를 만들고 이 클래스에서 dummyMethod() 메서드를 만듭니다.

이제 ExampleClass3 클래스에서 DummyClass.InnerClass를 사용하여 InnerClass를 가져오고 DummyClass 클래스의 개체를 만들고 dummyMethod() 함수를 호출합니다.

예시:

public class ExampleClass3 {
  public static void main(String[] args) {
    DummyClass.InnerClass dummyClassObj = new DummyClass.InnerClass();
    dummyClassObj.dummyMethod();
  }
}

class DummyClass {
  static class InnerClass {
    void dummyMethod() {
      System.out.println("Inside Static Dummy Method Of The Inner Static Class");
    }
  }
}

출력:

Inside Static Dummy Method Of The Inner Static Class

Java의 최종 변수

최종 변수는 초기화되면 수정할 수 없습니다. 이 예에서는 최종 변수를 만든 다음 다시 초기화하려고 하면 출력에 오류가 발생함을 보여 줍니다.

public class ExampleClass3 {
  public static void main(String[] args) {
    final int num = 0;
    num = 1;
  }
}

출력:

java: cannot assign a value to final variable num

다른 클래스는 final 클래스를 확장할 수 없습니다. 클래스를 생성하는 동안 final 키워드를 사용하면 클래스가 다른 클래스에 상속되지 않도록 제한됩니다.

예시:

public class ExampleClass3 {
  public static void main(String[] args) {
    new DummyClass().dummyMethod();
  }
}

final class DummyClass {
  public void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

class DummyClass2 extends DummyClass {
  public void dummyMethod2() {
    System.out.println("Inside Static Dummy Method 2");
  }
}

출력:

java: cannot inherit from final com.tutorial.DummyClass

우리는 서브클래스에서 final 메소드를 재정의할 수 없습니다. 최종 클래스와 마찬가지로 함수가 final 키워드를 사용하는 경우 해당 하위 클래스에 의해 재정의될 수 없습니다.

public class ExampleClass3 {
  public static void main(String[] args) {
    new DummyClass2().dummyMethod();
  }
}

class DummyClass {
  public final void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

class DummyClass2 extends DummyClass {
  public void dummyMethod() {
    System.out.println("Inside Overridden Dummy Method");
  }
}

출력:

java: dummyMethod() in com.tutorial.DummyClass2 cannot override dummyMethod() in com.tutorial.DummyClass
 overridden method is final
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Variable