728x90
  • 객체 지향 프로그래밍에서는 객체들 간의 접근을 제어할 수 있어야 합니다. 상태와 동작을 상호간에 접근을 허용할 수도 있어야하고, 접근을 막아야 하는 경우도 있습니다. 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서인데, 데이터가 유효한 값을 유지하도록 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서 외부로부터 접근을 제한하는 것이 필요합니다.
  • 이를 데이터 감추기(data hiding)이라고 하며, 객체지향개념에서는 캡슐화에 해당하는 내용입니다. 또 다른 이유로는, 클래스 내에서만 사용되는, 내부 작업을 위해 임시로 사용되는 멤버 변수나 부분 작업을 처리하기 위한 메서드 등의 멤버들을 클래스 내부에 감추기 위해서입니다. 외부에서 접근할 필요가 없는 멤버들을 private로 접근을 제한하면 코드의 복잡성도 줄일 수 있습니다.

 

접근제어(Access Modifier) 란?

객체의 상태정보(=멤버 변수) 는 중요하기 때문에 다른 클래스에서의 접근을 허용하지 않습니다. (정보은닉)
상태정보에 다른 객체가 접근하여 값을 수정하게 된다면, 객체가 불필요한 정보들을 갖게될 수 있고, 잘못된 데이터를 가지게 될 수도 있습니다.

  • 객체의 행위정보(=멤버 메서드) 는 상호작용이 필요하기 때문에 클래스끼리의 접근을 허용합니다.
  • 클래스나 멤버변수, 메서드, 생성자에 접근 제어자가 지정되어 있지 않다면, 접근 제어자가 default임을 뜻합니다.

 

https://cloudstudying.kr/lectures/201

 

       public > proteced > (default) > private

  1. public : 모든패키지에서 접근 가능 (모든 클래스 , 멤버 메서드는 public)
  2. private : 모든 패키지에서 접근 불가 (자기 자신만 접근 가능 / 모든 멤버변수는 private) 일반적으로 상태변수는 private으로 접근을 제한해주는 것이 일반적
  3. protected : 상속 관계에서 하위 클래스에서 상위 클래스 접근가능 자식이 부모에 있는 기능들을 사용하고 싶다면 protected로 제한한다.
  4. default : 동일한 패키지에서만 접근 가능 (코드에 작성되어 있지 않고 생략되어 있음)
    → 접근 제한자를 작성하지 않는다면 기본적으로 default이며, 클래스끼리는 동일한 패키지 내에서의 클래스끼리는 다 접근이 가능하다는 의미
    public이라고 작성하는 이유는 외부 패키지에서도 해당 클래스에 접근할 수 있도록 하기위해서 일반적으로 class를 작성할 때는 public을 작성해준다.

    📋 접근 제어자는 클래스와 클래스 내부에서 만들어지는 멤버변수, 멤버 메서드에 접근 제한자를 사용할 수 있다.

 

💡 Package란?

서로 기능이 비슷한 클래스들끼리 모아서 관리를 쉽게 하기 위해서 사용 (폴더 개념)
java는 대부분 2단계의 폴더구조를 가지고 있다 (API) / 기능이 비슷한 API들끼리 묶어서 패키지로 보관하여 사용하고 있다.

https://jeniffer0812techstory.tistory.com/24

 

  • 클래스를 접근하는 이름 이해하기

패키지를 포함하지 않는 클래스 이름은 (class name) 패키지를 포함한 클래스 이름 (class full name) → 패키지.패키지.클래스 이름
ex) 문자열을 처리하는 클래스 → java.lang.String 키보드로부터 데이터를 읽어드리는 클래스 → java.util.Scanner

해당 API 또는 클래스가 어디에 있는지 구조를 알고 있어야 class full name을 통해 해당 클래스로 접근이 가능해진다.

728x90
반응형

+ Recent posts