ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Java ] final 과 static
    면접 준비 2020. 5. 25. 17:46

     

     final

    final 은 상속/변경을 금지하는 규제입니다. C언어에서 Const나 #define과 같은 느낌입니다.

    final 필드

    변수에 final을 사용하면 1번 선언 후 변경이 불가능합니다.

    final 메소드

    overriding을 할 수 없습니다. 

    final 클래스

    상속할 수 없습니다.

     

     

     static

    static은 어떠한 값이 메모리에 한번 할당되어 프로그램이 끝날 때 까지 그 메모리에 값이 유지된다는 것을 의미합니다. 특정한 값을 공유해야 하는 경우라면, static 사용 시 메모리 사용에 이점이 있습니다. 

    static 변수

    static변수(클래스 변수)는 어디에서 선언이 되더라도 그 클래스 내에서는 공유가 되어진다. static이 선언되는 순간에 하나의 메모리 공간이 할당되기 때문입니다. ( 클래스가 메모리에 올라갈 때 자동으로 생성됩니다. )

    인스턴스 변수를 사용하면 객체가 생성될 때마다 다른 메모리 공간에 할당됩니다. 하지만 클래스 내에 static 변수를 사용하면 해당 변수는 서로 다른 객체 내에서도 같은 메모리 공간을 참조합니다. 따라서 각 공통적으로 값을 유지해야 하는 경우 static을 붙입니다.

    static 메소드 ( 정적 메소드 )

    static 메소드와 인스턴스 메드의 가장 큰 차이점은 static 메드의 경우 객체를 생성하지 않아도 클래스 이름으로 바로 호출할 수 있습니다. 

    static 메드 안에서는 인스턴스 변수를 사용할 수 없고 인스턴스 메소드도 호출할 수 없습니다. static이 인스턴스보다 초기화 시점이 빠르기 때문입니다. 인스턴스 변수나 인스턴스 메소드를 static 안에서 참조하려면 객체를 생성한 후 객체를 통해서 참조해야 합니다. 

    따라서 메소드 내에서 인스턴스 변수가 필요하지 않으면, 가능한 static을 붙이는 것이 좋습니다. 메소드 호출 시간이 짧아지기 때문에 효율이 높아집니다. ( static을 안 붙인 메소드는 실행 시 호출되어야할 메소드를 찾는 과정이 추가적으로 필요하기 때문에 시간이 더 걸립니다. )

     

     

     Static class/method 와 SingleTon의 차이

    Singleton Class는 객체를 함수에 파라미터로 전달할 수 있고, 일반 객체처럼 다룰 수 있습니다. 정적 클래스는 오로지 정적 메소드에 대한 접근만 허용합니다. 정적 메소드는 단순 사용만 가능하지만 Singleton 클래스는 다른 클래스를 상속될 수 있어 확장성이 큽니다.

     

    출처

    '면접 준비' 카테고리의 다른 글

    [ Java ] 예외 처리하기  (0) 2020.05.29
    [ Java ] 다형성 ( Polymorphism )  (0) 2020.05.25
    [ Java ] 제네릭 ( Generic )  (0) 2020.05.25
    [ Java ] Collection  (0) 2020.05.25

    댓글

Designed by Tistory.