본문 바로가기

LANGUAGE/JAVA

[Java] 제어자(modifier)

728x90

 

제어자란?

 

제어자란 클래스, 변수, 메소드 선언부 앞쪽에 함께 사용되어 부가적의미를 부여한다.

 

종류

  • 접근제어자
public, protected, default, private
  • 그 외의 제어자
static, final, abstract, native, transient, synchronized, volatile, strictfp

 

여러가지 제어자를 조합하여 사용하는 것 가능

접근 제어자는 하나만 사용가능

순서는 상관없지만, 접근제어자를 맨 앞에 두는 경향이 있다. 

 

 

static

 

의미 :  공통적인 / 클래스의

인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용이 가능하다.

 

 

인스턴스 변수 vs 클래스(static) 변수

인스턴스 변수 : 하나의 클래스로 부터 생성되었어도, 서로 다른 값을 가진다. (별개의 인스턴스)

클래스 변수 : 인스턴스에 관계없이 값을 가지며, 하나의 변수를 모든 인스턴스가 공유한다. 

 

인스턴스 메소드 vs 클래스(static) 메소드

static메소드는 메소드 내에서 인스턴스 멤버 사용X

→인스턴스 멤버를 사용하지 않는 메서드는 static메서드로 선언하는 것이, 인스턴스를 생성하지 않고 호출이 가능하기 때문에, 편리하며 속도도 빠르다.

 

static으로 선언 가능한 것들 
  • 클래스 변수(static 변수)
  • 클래스 초기화 블럭
  • 클래스 메소드(static 메소드)
//클래스(static) 변수
static int width = 200;
static int height = 300;


//클래스 초기화 변수
static {
        //static 변수의 복잡한 초기화 수행 (주로 클래스변수를 초기화할 때 사용)
        //클래스가 메모리에 로드될 때 한 번만 수행 
}

// 클래스(static) 메서드
static int max(int a, int b){
    return a > b ? a : b;
}

 

 

 

 

추가예정)

final

abstract

access modifier

728x90

'LANGUAGE > JAVA' 카테고리의 다른 글

[JAVA] 배열 Array  (0) 2021.10.28
[Java] 열거형(enums)  (0) 2021.09.22