성장일기

내가 보려고 정리하는 공부기록

언어/자바

[JAVA] 접근제한자, static과 final

와나나나 2024. 6. 12. 19:45
728x90

자바로 클래스나 함수, 변수를 생성할 때 파이썬과 달리 이것저것 붙는 걸 알 수 있다.

public class Test {
	
    static int A = 100;
	public static void main(String[] args) {
		    System.out.println(A);
    }
}

 

이런식으로 public, static 등 알 수 없는 것들이 써있는데, 오늘은 이것들을 정리해보려고 한다.

 

 

1. 접근제한자

접근제한자는 이름에서도 알 수 있듯이 멤버의 접근을 제한하기 위해 사용한다. 접근제한자는 총 4가지가 있다.

  1. public : 외부 클래스에서도 자유롭게 사용할 수 있게 함
  2. protected : 같은 패키지 혹은 자식클래스 (상속하고있는 클래스)에서 사용할 수 있음
  3. default : 같은 패키지에 소속된 클래스만 사용 가능
  4. private : 외부에서 사용할 수 없음

위에서 작성한 순서대로 접근 제한이 강화된다. 아무것도 쓰지 않았을 경우에는 default로 생성된다.

출처 : 혼공자바

 

정리하면 다음과 같다.

 

 

2. static

static은 정적이라는 뜻을 가지며, 객체를 생성하지 않고 클래스에 고정된 필드와 메소드를 의미한다. 이는 인스턴스에 소속되어있지 않기 때문에 클래스멤버라고도 한다.

 

static int age;

 

이런식으로 static 타입 필드명 형태로 작성한다. 이를 사용할 때에는 클래스명.필드명(메소드명)으로 사용한다.

 

 

3. final

final은 초기값이 저장되면 이후에 값을 변경할 수 없게 한다.

초기값은 필드를 선언할 때 명시적으로 지정하는 방법과 생성자로 지정하는 방법이 있다.

public class Member {
  public final String gender;

  // 생성자를 통해 final 필드 초기화
  public Member(String gender) {
    this.gender = gender;
  }
}

 

한번 초기화 되면 수정할 수 없으나, 객체마다 다른 값으로 초기화 할 수 있기 때문에 상수라고 하지 않는다. 

하지만 static final 이라고 쓰면 객체마다 저장되지 않고 값도 바뀌지 않아 상수로 쓸 수 있다.