[JAVA] 접근제어자(Access Modifier)-(1)

Soo·2023년 8월 18일
0
post-thumbnail

💡 접근 제어자

  • 접근 제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 함
  • 접근 제어자는 생략 가능하며 생략했을 때는 자동으로 default임을 뜻함
    따라서, default일 경우에 접근 제어자를 따로 지정하지 않는다.
  • 접근 제어자가 사용될 수 있는 곳: 클래스, 멤버변수, 메서드, 생성자

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

따라서 접근 범위는 private<default<protected<public 순으로 보다 많은 접근을 허용한다.

📌 접근 제어자를 이용한 캡슐화

  • 접근 제어자를 사용하는 이유: 클래스 내부에 선언된 데이터를 보호하기 위해
    ➡️ 데이터가 유효한 값을 유지하도록 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다.
  • 이것을 '데이터 감추기'라고 하며 객체지향프로그래밍 개념에서는 캡슐화(encapsulation)라고 한다.

🗂️ 제어자의 조합

  • 대상에 따라 사용할 수 있는 제어자
    1) 클래스: public, (default), final, abstract
    2) 메서드: 모든 접근제어자, final, abstract, static
    3) 멤버변수: 모든 접근제어자, final, static
    4) 지역변수: final

⚠️ 제어자를 조합해서 사용할 때 주의사항

1) 메서드에 staticabstract을 함께 사용할 수 없음
: static메서드는 몸통이 있는 메서드에만 사용할 수 있기 때문
2) 클래스에 abstractfinal 을 동시에 사용할 수 없음
: 클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이고, abstract은 상속을 통해 완성되어야 한다는 의미이므로 서로 모순되기 때문
3) abstract메서드의 접근 제어자가 private일 수 없음
: abstract메서드는 자손클래스에서 구현하기 위해 접근해야하기 때문
4) 메서드에 privatefinal을 같이 사용할 필요는 없음
: 접근 제어자가 private인 메서드는 오버라이딩이 될 수 없기 때문. 즉, 이 둘 중 하나만 사용해도 의미가 충분함

profile
Soogineer's Devlog

0개의 댓글