Everyday Growing Engineer 2022. 8. 3. 18:21

제어자란 메서드나 변수 클래스의 선언부에서 함께 사용되어 추가적인 의미를 부여한다. 

 

접근제어자 : public, protected, default, private

그 외 제어자 : static, final, abstract

Static : 

  • 클래스 변수(static 맴버변수)는 인스턴스에 관계없이 같은 값을 가짐. (인스턴스 변수는 하나의 클래스로부터 생성되어도 다른값 유지)

static 멤버변수

  • 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.
  • 클래스변수는 인스턴스를 생성하지 않고도 사용가능하다.
  • 클래스가 메모리에 로드될 때 생성된다.

static 메서드

  • 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
  • static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다.

final:

  • 변수에서 사용시 : 변경되면 안되는 값을 지정할때 사용함. (변수 -> 상수, final 추가시)
  • 메서드에서 사용시 : 변경할수 없는 메소드가 됨. 오버라이딩 할수 없게됨.
  • 클래스에서 사용시 : 변경할수 없는 클래스가 됨. 부모 클래스가 될수 없음.

abstract

  • 메서드의 선언부만 작성, 실제 수행 내용은 구현하지 않은 추상메서드를 선언하는데 사용한다.
  • abstract 클래스 : 클래스 내에 하나 이상의 추상메서드가 선언되어 있으면 반드시 abstract을 붙여야함
  • abstract 메서드 : 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다.

 

사용가능한 제어자

  • 클래스 : public, default, final, abstract
  • 메서드 : public, protected, default, private, final, abstract, static
  • 멤버변수 : public, protected, default, private, final, static
  • 지역변수 : final

 

 

 

 

접근 제어자(access modifier)

 

접근 제어자는 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한한다. 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default임을 뜻한다. 

  • public : 접근 제한이 전혀 없다. 
  • protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능하다.
  • default : 같은 패키지 내에서만 접근이 가능하다.
  • private : 같은 클래스 내에서만 접근이 가능하다.

사용가능한 접근 제어자

  • 클래스 : public, default
  • 메서드 & 멤버변수 : public, protected, default, private
  • 지역변수 : 없음