[패스트캠퍼스] [ 객체를 접근하는 권한 이해 ] 나도 할 수 있는 Java&Spring 웹 개발 종합반 65 ~ 69강
2024. 5. 20. 13:38ㆍ나도 할 수 있는 Java&Spring 웹 개발 종합반
728x90
반응형
1. 접근제어란?
객체(클래스) 상호간에 접근제어가 필요한 이유 :
1. 객체의 상태정보는 중요하기 때문에 접근을 못하게 해야한다 (정보은닉)
2. 객체의 행위정보는 상호작용을 해야 되기 때문에 접근을 허용한다
행위 : 메서드라서 호출이 가능, 상태는 중요한 정보라 접근을 막아야 함
public -> 접근을 제약 없이 허용하겠다
객체 상호간의 접근을 제어하는 방법 (클래스 상호간에)
- 4가지 접근 제한자
접근제한자 | 설명 |
public | 모든 패키지에서 접근 가능 (모든 클래스는 public) (모든 멤버 메서드는 public) |
private | 모든 패키지에서 접근불가 (자기 자신만 접근 가능) (모든 멤버변수는 private) |
protected | 상속관계에서 하위클래스에서 상위클래스 접근가능 |
default | 동일한 패키지에서만 접근 가능 (default 라는 값은 없음 ! 아무 값도 쓰지 않으면 생략되어있음 !) |
클래스를 설계할 때 고려해야 한다
클래스와 클래스 내부에서 만들어지는 멤버에 접근 제한자를 사용할 수 있다
package fc.java.model;
public class MemberDTO {
public String name;
private int age; // 정보 은닉
public String phone;
}
package fc.java.part3;
import fc.java.model.MemberDTO;
public class AccessModifier {
public static void main(String[] args) {
MemberDTO dto = new MemberDTO();
dto.name = "홍길동";
dto.phone = "010-1234-5678";
dto.age = 1000; // 에러발생 -> 접근불가
}
}
그렇다면 private인 age는 어떻게 값을 넣을 수 있는가 -> 메서드를 통해
2. 패키지란 무엇인가
서로 기능이 비슷한 클래스들끼리 모아서 관리를 쉽게 하기 위해서 사용 (폴더개념)
패키지 외부에서 클래스의 접근을 할 수 없도록 하기 위해서 사용 (보안측면)
자바에서 제공해주는 API도 패키지의 형태로 배포한다
* 자바에서 제공해주는 대표적인 패키지들
패키지 이름 | 설명 |
java.lang (default package) | 자바에서 자주 사용하는 클래스 (String, System 등) |
java.io | 입출력 관련 클래스 (InputSystem 등) |
java.net | 네트워킹 관련 클래스 |
java.util | 도움을 주는 클래스 (Scanner 등) |
java.sql | 데이터베이스 관련 클래스, SQL |
java.math | 수학관련 클래스 |
3. 클래스를 접근하는 방법 2가지
* 클래스를 접근하는 이름 이해하기
- 패키지를 포함하지 않는 클래스이름 (class name)
- 패키지를 포함한 클래스이름 (classfull name)
클래스에 접근하려면 만들어진 위치와 접근제어를 알아야 한다
java.lang.*이 항상 생략되어 있는 default 패키지이다
1. 클래스 전체이름으로 접근하는 방법
2. import를 사용하여 접근하는 방법
728x90
반응형