JAVA_제한자 Modifier, 접근제한자 Access Modifier 또는 제어자

호근·2022년 12월 4일
0

java

목록 보기
10/35

제한자(제어자) Modifier란?

클래스, 변수, 메서드의 선언부에 함께 사용되어 해당 클래스, 변수, 메서드에 부가적인 의미를 부여한다.

제한자는 접근제한자와 그 외 제한자로 나눌 수 있다.

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

그 외 제한자 : static, final, native, transient, synchronized, volatile, strictfp

접근제한자는 사용범위를 지정한다는 표현이 맞을 것이다.


그 외 제한자

1) static
2) final
3) abstract
4) native
5) transient
6) synchronized
7) volatile
8) strictfp

1. Static - [클래스의 공통적인] 의미를 지니는 제어자이다.

변수 앞에 static을 붙이면 해당 변수는 JVM의 static영역에 할당된다.
(필드에서 선언해도 static영역으로 올라간다.)

static영역에 할당된 데이터는 클래스로더가 클래스를 메모리에 올릴 때 같이 올라가게되며 프로그램이 종료될 때 까지 제거되지 않는다.

때문에 Static 제한자는 프로그램이 작동하는 내내 필요한 클래스, 변수, 메서드에 붙여준다.

static을 통해 멤버면수를 제어하게되면, 모든 인스턴스에 공통으로 사용되는 클래스 변수가 된다.
클래스 변수는 인스턴스 생성 여부와 관계없이 사용이 가능하다.

static을 통해 메서드를 제어하게 되면, 인스턴스를 생성하지 않고도
호출이 가능한 static메서드가 된다.


위 캡쳐의 두 코드는 다른 클래스파일이다.

StaticTest의 메인메서드에서 Z_Static에서 static 제어자를 통해 선언된 testStaticMethod를 인스턴스로 받을 수 있는 것을 확인했다.


반대로 static 제어자가 선언되지 않은 메서드, 변수, 클래스를 가져올 때에는 다음 캡쳐와 같이 new 생성자를 통해 인스턴스화한 뒤 접근할 수 있다.

2. final - [마지막의, 변경될 수 없는]의미를 지닌 제어자이다.

final 제어자는 거의 모든 대상에 사용 가능하다.
클래스, 메서드, 멤버변수, 지역변수에 사용가능하며,

final class : 변경불가한 클래스, 확장불가한 클래스가 된다. 따라서 다른 클래스의 조상이 될 수 없다.

final Method : 변경될 수 없는 메소드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.

final 멤버변수 & 지역변수 : final 이 변수를 제어하면 값을 변경할 수 없는 상수가 된다.

3. abstract - [추상의, 미완성의]의미를 가진 제어자이다.

abstract 제어자는 클래스, 메서드에 사용가능하다.
아직 완성되지 않은 메소드가 존재하는 미완성 설계도이다.
때문에 인스턴스를 생성할 수 없다.

다른 클래스가 abstract클래스를 상속받아 원하는 메서드만 오버라이딩 해도 된다는 장점이 있다.


접근 제한자 Access Modifier란?

외부로부터 데이터를 보호하기 위해 접근을 제한, 제어하는 것을 말한다.
객체지향의 캡슐화에 해당한다.

변수나 메서드에 접근할 수 있는 범위를 제한한다.

1) public : 접근 제한이 없음
2) private : 같은 클래스 내에서만 접근 가능
3) protected : 같은 패키지 내에서 접근 가능, 다른 패키지의 자손 클래스에서 접근 가능
4) default : 같은 패키지 내에서 접근가능

*! 인스턴스 변수의 값에 범위가 존재하거나 특정한 값을 못받게 하기 위해서, 변수를 private로 제어하고 public으로 선언된 getter와 setter메서드를 통해 간접적으로 멤버변수의 값을 다룰 수 있게 한다.

profile
22.11.28 ~

0개의 댓글