[패스트캠퍼스] [ 객체를 접근하는 권한 이해 ] 나도 할 수 있는 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
반응형