코이_CO2
LIVING IS DYING
코이_CO2
전체 방문자
오늘
어제
  • 분류 전체보기 (45)
    • TIL ⚓️ (4)
      • OT주차 (1)
      • 1주차_풀스택 미니 프로젝트 (0)
      • 1주차_언어 기초(Java) (0)
      • 2주차_프로그래밍 기초 (1)
      • 3주차_주특기 입문(Spring) (0)
      • 4주차_주특기 숙련(Spring) (2)
    • WIL ⚓️ (0)
      • OT주차 (0)
      • 1주차_언어 기초(Java) (0)
      • 2주차_프로그래밍 기초 (0)
      • 3주차_주특기 입문(Spring) (0)
      • 4주차_주특기 숙련(Spring) (0)
    • Java의 정석 📖 (4)
      • Chapter 1. 자바를 시작하기 전에 (3)
      • Chapter 2. 변수 (0)
      • Chapter 3. 연산자 (0)
      • Chapter 4. 조건문과 반복문 (1)
    • Programmers (7)
      • Lv. 1 (7)
    • 혼자 공부하는 자바 📖 (8)
      • Chapter 05 참조 타입 (0)
      • Chapter 06 클래스 (3)
      • Chapter 07 상속 (1)
      • Chapter 08 인터페이스 (1)
      • Chapter 09 중첩 클래스 & 인터페이스 (0)
      • Chapter 10 예외 처리 (1)
      • Chapter 12 스레드 (1)
    • Java (2)
    • Spring (1)
    • Python (2)
    • Mysql (4)
    • Machine Learning (6)
      • 추측 통계 (2)
    • Data Analysis (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • TIL/WIL
  • 혼자공부하는자바
  • 개발자
  • 혼자 공부하는 자바
  • 배열
  • spring
  • 웹개발 종합반
  • 하루기록
  • 코딩
  • CRUD
  • PYTHON
  • TIL
  • 개발일지
  • sql
  • 스터디
  • Spring Security
  • 파이썬
  • 주특기 심화주차
  • 스프링
  • 프로그래머스
  • 자바
  • DTO
  • 부트스트랩
  • HTML
  • java
  • jwt
  • 항해99
  • programmers
  • 게시판 프로젝트
  • LV1

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
코이_CO2

LIVING IS DYING

Chapter 06-6(2) 패키지와 접근 제한자
혼자 공부하는 자바 📖/Chapter 06 클래스

Chapter 06-6(2) 패키지와 접근 제한자

2022. 12. 5. 08:59

접근 제한자(Access Modifier)

클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 제한하기 위해 사용

  • public : 외부 클래스가 자유롭게 사용할 수 있도록 함
  • protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 함
  • private : 개인적인 것이라 외부에서 사용될 수 없도록 함
  • default : 위 3가지 접근 제한자가 사용되지 않을 경우 적용되고 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 함

접근 제한자 클래스 내부 동일 패키지 자식 클래스 다른 패키지
private O X X X
default O O X X
protected O O O X
public O O O O

클래스의 접근 제한

클래스 선언 시 해당 클래스를 어느 범위까지 사용할 것인지 결정해야 하며 클래스는 public, default 접근 제한을 갖는다

// default 접근 제한
class 클래스 {...}

// public 접근 제한
public class 클래스 {...}

 

default 접근 제한

클래스 선언 시 public을 생략하면 default 접근 제한을 갖으며

같은 패키지 내에서는 제한 없이 사용되고 다른 패키지에서는 사용할 수 없도록 제한된다

 

public 접근 제한

클래스 선언 시 public 접근 제한자를 붙이면 되고 같은 패키지뿐만 아니라 다른 패키에서도 제한없이 사용 가능

인터넷으로 배포되는 라이브러리 클래스 모두 public 접근 제한을 갖고 있음

 

생성자의 접근 제한

객체를 생성하기 위해서는 new 연산자로 생성자를 호출하는데, 생성자가 어떤 접근 제한을 갖는지에 따라 호출 가능 여부가 결정

클래스에 생성자를 선언하지 않으면 자동으로 기본 생성자가 추가, 기본 생성자의 접근 제한은 해당 클래스의 접근 제한과 동일하게 설정

 

  • public 접근 제한 : 모든 패키지에서 아무런 제한 없이 생성자 호출
  • protected 접근 제한 : default와 마찬가지로 같은 패키지에 속하는 클래스에서 생성자를 호출할 수 있으나 다른 패키지에 속한
    클래스가 해당 클래스의 자식 클래스라면 생성자를 호출할 수 있음
  • default 접근 제한 : 다른 패키지에서 생성자를 호출할 수 없고 같은 패키지에서만 호출이 가능함
  • private 접근 제한 : 오로지 클래스 내부에서만 생성자를 호출할 수 있고 객체를 만들 수 있음(동일 패키지X, 다른 패키지 X)

단 하나의 객체만 만들도록 보장해야 하는 경우, 싱글톤 패턴으로 설계

싱글톤 패턴 : 생성자를 private 접근 제한으로 선언하고 자신의 유일한 객체를 리턴하는 getInstance() 정적 메소드를 선언하는 것

 

필드와 메소드의 접근 제한

어떤 접근 제한을 갖는지에 따라 필드와 메소드의 사용 범위가 결정

필드와 메소드는 public, protected, default, private 접근 제한을 가질 수 있다

 

  • public 접근 제한 : 모든 패키지에서 아무런 제한 없이 사용 가능
  • protected 접근 제한 : default와 마찬가지로 같은 패키지에 속하는 클래스에서 사용할 수 있으나 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메소드를 사용할 수 있음
  • default 접근 제한 : 다른 패키지에서 필드와 메소드 사용할 수 없음
  • private 접근 제한 : 오로지 클래스 내부에서만 사용 가능(동일 패키지X, 다른 패키지X)

Getter와 Setter 메소드

일반적인 객체 지향 프로그래밍에서는 객체의 무결성이 깨질 수 있기 때문에 필드를 객체 외부에서 직접적으로 접근하는 것을 막음

필드는 private로 선언하여 외부로부터 보호, Getter와 Setter 메소드를 작성해서 필드값을 안전하게 변경 및 사용하는 것이 좋음

 

Setter 메소드

  • 데이터를 변경하는 역할
  • 매개값을 검증해서 유효한 값만 객체의 필드로 저장
  • 형식 : set + 필드이름(첫 글자는 대문자) + ()

Getter 메소드

  • 데이터를 읽어오는 역할
  • 외부에서 객체의 데이터를 읽을 때 필드값을 가공한 후 외부로 전달
  • 필드 타입이 boolean일 경우 get으로 시작하지 않고 is로 시작하는 것이 관례
  • 형식 : get + 필드이름(첫 글자는 대문자) + () / is + 필드이름(첫 글자는 대문자) + ()
메소드 읽기 전용 쓰기 전용 모두 접근 제어
Getter(get / is XXX) O X O X
Setter(setXXX) X O O X

 

'혼자 공부하는 자바 📖 > Chapter 06 클래스' 카테고리의 다른 글

Chapter 06-6(1) 패키지와 접근 제한자  (0) 2022.12.02
Chapter 06-3(2) 생성자 오버로딩, 다른 생성자 호출: this()  (0) 2022.11.28
    '혼자 공부하는 자바 📖/Chapter 06 클래스' 카테고리의 다른 글
    • Chapter 06-6(1) 패키지와 접근 제한자
    • Chapter 06-3(2) 생성자 오버로딩, 다른 생성자 호출: this()
    코이_CO2
    코이_CO2
    나에게 찾아오는 뻔한 매일을 언제나 값지게 여길 줄 아는 내가 되기를

    티스토리툴바