ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제어자 modifier
    Programming/Java 2021. 8. 9. 11:18

    제어자

    클래스, 멤버변수, 메서드 선언부에 사용하여 부가적인 의미 부여

    접근제어자 : public, protected, default, private (조합하여 사용 불가)

    그 외 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp(다른 제어자와 조합 가능)

     

    static

    사용되는 위치 : 멤버변수, 메서드, 초기화블럭

    제어자 대상 의미
    static 멤버변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수
    (모든 인스턴스에서 공통으로 유지해야 하는 값이 있는 경우 static을 붙이자)
    클래스가 메모리에 로드 시 생성됨 -> 
    클래스변수는 인스턴스 생성하지 않고 사용 가능
    메서드 인스턴스를 생성하지 않고 호출 가능
    인스턴스 멤버들을 직접 사용 불가
    초기화블럭 클래스가 메모리에 로드 시 단 한번만 수행 
    주로 클래스변수(static 변수) 초기화에 사용

    ※ 인스턴스 메서드와 static 메서드(클래스메서드)의 차이 : 메서드 내에서 인스턴스 멤버를 사용하는가 (인스턴스 멤버를 사용하지 않는다면 static메서드로 하자)

     

    final 변경 불가

    제어자 대상 의미
    final 클래스 변경 불가, 확장 불가 -> 상속 불가
    메서드 변경 불가 -> 오버라이딩 불가
    멤버변수 값 변경 불가한 상수
    지역변수

    ※ final 멤버변수 초기화는 보통 선언과 초기화 동시에 하지만, 인스턴스 변수라면 매개변수 생성자를 이용해 초기화할 수도 있다.

     

    abstract 미완성

    제어자 대상 의미
    abstract 클래스 클래스 내에 추상메서드 선언되어 있음.
    미완성 메서드 -> 인스턴스를 생성할 수 없다
    메서드 선언부만 작성, 구현부는 없다

    ※ 드물지만 추상 메서드가 없는 클래스도 abstract를 붙여 추상 클래스로 만들 수 있다.

       예 ) WindowAdapter 클래스

             public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener

             {

                  public void windowOpened(WindowEvent e) {}

                  public void windowClosing(WindowEvent e) {}

                  public void windowClosed(WindowEvent e) {}

                  public void windowIconified(WindowEvent e) {}

                  .....

              }

     

     

     

     

    ※ 포스팅에 사용한 도서 : 남궁성 자바의 정석 3판

    'Programming > Java' 카테고리의 다른 글

    제어자의 조합  (0) 2021.08.09
    접근제어자  (0) 2021.08.09
    다형성  (0) 2021.08.02
    프로그래밍 언어의 분류  (0) 2021.07.31
    변수, 배열, 구조체, 클래스, 객체, 인스턴스  (0) 2021.07.29

    댓글

Designed by Tistory.