제어자(modifier)

Heejeong Choi·2021년 9월 17일
0

Java의 정석 기초편

목록 보기
15/19
해당 포스팅은 '자바의 정석 기초편'을 보고 작성되었습니다.

제어자(modifier)

  • 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여하는 역할
  • 하나의 대상에 대해서 여러 제어자를 조합해 사용하는것 👌🏼

접근제어자

  • public, (default), protected, private

그 외

  • static, final, abstract, transient, synchronized, volatile, strictfp
✨ 추가적으로 제어자들의 순서는 관계없지만 접근 제어자를 제일 왼쪽에 두는 무언의 약속이 있다!

static, final, abstact를 제외하고 잘 사용되지 않으므로 우선 접근제어자와 그 외 3가지에 대해 짚고 넘어갈 것이다


static

인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스 변수(static 멤버변수)는 인스턴스에 관게없이 같은 값을 가짐 👉🏼 WHY? 하나의 변수를 모든 인스턴스가 공유하기 때문!!!
즉, static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관게된 것이기 때문에 인스턴스를 생성하지 않고도 사용이 가능하다.
static이 사용될 수 있는곳? 멤버변수, 메서드, 초기화 블럭

final

변수에 사용되면 값을 변경할 수 없는 상수가 되고,
메서드에 사용되면 오버라이딩을 할 수 없게 되고,
클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지 못하는 것!
final이 사용될 수 있는곳? 지역변수, 멤버변수, 메서드, 초기화 블럭

abstract

추상화는 말그대로 미완성된 것
메서드의 선언부만 작성하고 실제 수행내용은 구현하지 않은 추상메서드를 선언하는데 사용됨.
클래스 내에 추상 메서드가 선언되었음을 의미
그리고 당연히 추상 클래스는 아직 완성되지 않은 메서드가 존재하는 것이므로 인스턴스 생성은 불가하다.

접근 제어자

멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
접근 제어자가 사용될 수 있는곳? 클래스, 멤버 변수, 메서드, 생성자

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

public > protected > (default) > private

제어자같은 클래스같은 패키지자손 클래스전 체
publicOOOO
protectedOOO
(default)OO
privateO

접근제어자에 대해 간단하게 알아보았다. 다음 포스팅에서는 빠질 수 없는 캡슐화와 함께 접근 제어자를 다루어 볼 것이다.

profile
Welcome to my velog! I love learning something new to build up my ability in development field. I don't think it is shame not to know, but it is shame to pretend to know about something you don't know.

0개의 댓글