Java & Kotlin

Java modifier

필자A 2022. 8. 24. 22:36

 

 

 

 

 

 

 

Modifier

접근 제어자

 

이미 개발자로 일하고 있지만 Java launage의 기본 공부에 대하여 많이 부족한 편이어서

공부해보는 시간을 가지려 합니다.

접근 제어자는 흔히들 말하듯이 public, private 같은 키워드들을 표현합니다.

라고 생각했지만 final, static 같은 키워드들도 모두 접근제어 자안에 포함됩니다.

 

접근 제어자를 사용하면 access level을 제어하며 추가적인 기능을 제공합니다.

 

 

 

 

 

 

 

 

📗

 

Access Modifier

가시성을 제어한다.

 

 

1. class에 사용 가능한 modifier

 

public - 모든 패키지에서 접근이 가능하다.

default - 동일 패키지에서만 접근이 가능하다.

 

2. method, attribute, constructor에 사용가능한 modifier

 

public - 모든 패키지에서 접근이 가능하다.

private - 선언된 class내에서만 접근이 가능하다.

default - 동일 패키지에서만 접근이 가능하다.

protected - 동일 패키지 + 상속 구조에서만 접근이 가능하다.

 

 

 

 

가시성 순위 public  > protected > default > private

 

📗

 

Non Access Modifier

가시성을 제어하지는 못하지만 다른 기능을 제공한다.

 

 

1. class에 사용가능한 modifier

 

abstract - instance화 될 수 없음 ( new keyword 사용불가 )

final - 상속 될 수 없음

 

2. method, attribute에 사용 가능한 modifier

 

abstract - abstract class내에서 사용 가능, 내용의 구현을 하위 class에 위임

final - 재정의 될 수 없다.

static - heap or method area영역에 위치하여 모든 스레드가 접근할 수 있다.

transient - 해당 속성은 직렬화 대상에서 제외된다.

volatile - 멀티 스레드 환경에서의 가시성을 보장해준다.(동기화 보장 x)

synchronized - 멀티스레드 환경에서의 동기화를 보장한다.

 

 

 

 

 

 

 

 

📗

 

공부하며...

1. 

웹 애플리케이션을 작성하며 패키지를 나누는 방법을

관심사 기준으로만 보았는데

Access Modifier를 공부하니

노출되면 안 되는 정보를 위해서도 패키지를 나눠야 한다고

생각을 했습니다.

 

 

 

2.

회사에 개발자 많아지면

서로의 코드를 파악하기가 힘들어 불필요하게 넓어진 가시성으로 인해

접근할 필요가 없는 정보에 접근하거나

IDE의 코드 어시스턴트에서 많은 정보를 제공하여

로직에 필요한 필요조건 파악이 힘들어집니다.

 

Access Modifier를 사용하여 적절한 가시성을 제어해야 할 것 같습니다.

반응형