728x90

말 그대로 접근을 제한하기 위헤 사용된다.
여기서 말하는 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 말한다.

대부분 main()메소드를 포함한 실행 클래스 외에는 외부 클래스에서 사용할 목적으로 설계된 라이브러리 클래스이다.
외부 클래스에서 사용할 시 라이브러리 클래스가 무분별하게 변경이 될 수 있다면 안전하지않은 클래스이다.
클래스를 안전하게 보호하기 위해서 생성자를 호출하지 못하게 하거나,
객체의 특징 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록,
특정 메소드를 호출할 수 없도록 접근 제한자를 통해 제한할 수 있다.


클래스, 필드, 메소드에 접근제한자 선언 가능.

 

어떤 경우에는 클래스와 인터페이스를 다른 패키지에서 사용하지 못하도록 막을 필요가 있다. 
그리고 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나
필드나 메소드를 사용하지 못하도록 막아야 되는 경우도 있는데 이럴때 접군 제한자를 사용한다.

접근제한자는 public, protected, private, default가 있다.

  • public : 외부 클래스가 자유롭게 사용할 수 있도록 한다.
  • protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다.
  • private : 개인적인 것이라 외부에서 사용될 수 없도록 한다. (외부?)
  • default : 같은패키지에 소속된 클래스에서만 사용할 수 있도록 한다.

만약 클래스나 변수를 선언할 때 아무것도 쓰지 않으면 default 접근제한을 가진다.
클래스가 default를 가지면 같은 패키지에서는 제약없이 사용가능하지만
다른 패키지에서는 사용할 수 없다.


클래스의 접근제한자

클래스의 접근 제한자는 public과 default가 있다.
public은 항상 모든 곳에서 접근 가능
default는 같은 패키지 안에서만 접근 가능

public 클래스의 이름은 클래스 파일 이름과 동일해야 한다.
즉 파일 하나 당 public 클래스는 한개고 나머지는 Default클래스가 된다.
( public클래스가 하나도 없고 모두가 default인 클래스 파일은 존재할 수 있지만
 반재도 public클래스가 여러개인 파일은 존재할 수 없다 )


메소드/변수의 접근 제한자

메소드 및 변수의 접근 제한자는 public, protected, default, private가 있다.


 

728x90

'개념정리' 카테고리의 다른 글

Get ,Post  (0) 2021.04.07
[spring] Rest API  (0) 2021.04.06
관점 지향 프로그래민(Aspect Oriented Programming , AOP)  (0) 2021.04.04
트랜젝션  (0) 2021.04.02
예외처리 (try,catch, throw, throws)  (0) 2021.04.02

+ Recent posts