[Java] Modifier

Jane·2021년 1월 27일
1
post-thumbnail

제어자(modifier)

  • 클래스, 변수 또는 메서드 선언부에 함께 사용되어 부가적인 의미를 부여한다.
  • 접근 제어자: public, protected, default, private
    • 접근 제어자는 한 번에 한 가지만 사용할 수 있으며 주로 제일 왼쪽에 위치한다.
  • 기타: static, final, abstract, native, transient, synchronized, volatile, strictfp

접근 제어자(access modifier)

  • 멤버 또는 클래스에 대한 외부의 접근을 제한하는 역할을 한다.
  • 목적
    • 클래스 내부에 선언된 데이터의 보호
    • 내부적으로만 사용되는 멤버변수나 메서드 등을 클래스 내부에 은닉
  • 멤버 변수는 상속이 예상된다면 protected, 아니라면 private으로 선언하고 getter, setter를 통해 접근하도록 정의한다.
  • 접근 제어자의 종류
    • private: 같은 클래스 내에서만 접근 가능
    • default: 같은 패키지 내에서만 접근 가능
    • protected: 같은 패키지 또는 다른 패키지의 자손 클래스에서 접근 가능
    • public: 접근 제한 없음

      public > protected > default > private

static

  • 뜻: 클래스의, 공통적인
  • static 멤버변수, 메서드, 초기화 블럭은 인스턴스 생성 없이도 사용할 수 있다.
  • static 멤버변수
    • static 멤버변수는 클래스가 메모리에 로드될 때 생성된다.
    • static 멤버변수(클래스 변수)는 모든 인스턴스 사이에 공유되기 때문에 인스턴스와 관계 없이 동일한 값을 지닌다.
  • static 메서드
    • static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다.
  • static 초기화 블럭
    • static 초기화 블럭은 맨 처음 static을 호출하는 상황에서 자동으로 초기화되며 단 한 번만 호출된다.
class Main {
    public static void main(String[] args) {
        System.out.println(Circle.PI);
    }
}

class Circle {
    static float PI;
    int r;

    static {
        PI = 3.14f;
    }
}
  • 실행 결과

final

  • 뜻: 마지막의, 변경될 수 없는
  • String과 Math는 대표적인 final 클래스이다.
대상의미
클래스변경할 수 없는 클래스, 확장할 수 없는 클래스 → final 클래스는 다른 클래스의 조상이 될 수 없다.
메서드변경할 수 없는 메서드 → final 메서드는 오버라이딩이 불가하다.
멤버변수, 지역변수final 변수는 값을 변경할 수 없는 상수이다.

abstract

  • 뜻: 추상의, 미완성의
  • 추상 클래스: 추상 메서드를 포함한 클래스
  • 추상 메서드: 선언부만 작성하고 구현부는 작성하지 않은 메서드
  • 추상 클래스는 미완성인 메서드가 존재하는 '미완성 설계도'이므로 인스턴스를 생성할 수 없다.
abstract class AbstractTest { 
    abstract void move();
}

Source

0개의 댓글