Code States | OOP 심화(2) - 캡슐화

yeonk·2022년 5월 24일
1

codestates-backend-bootcamp

목록 보기
11/19
post-thumbnail

💡 먼저 보면 좋을 자료
Code States | OOP 심화(1) - 상속






1. 캡슐화(Encapsulation)


객체의 속성과 기능을 캡슐로 집약하여 외부로부터 보호하는 것.
연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것.

  • 목적

    • 데이터 보호: 쉽게 중요한 데이터를 바꾸지 못하도록 함

    • 불필요한 데이터 노출 방지: 정보 은닉이 주 목적 (외부에서 내부로의 직접적인 접근 및 수정 제한)

  • 캡슐화 수단으로 접근제어자(Access Modifier) 사용






2. 패키지(Pachage)


목적을 공유하는 인터페이스 및 클래스들의 집합
→ 그룹 단위로 관리하기 때문에 효율적

  • 계층 구조 구분: .

  • 패키지가 존재한다면 가장 첫 줄에 패키지 선언을 진행해야함(없으면 익명 패키지에 속함)

  • 클래스명간 충돌을 방지할 수 있음






대표 패키지

  • java.lang: 기본 클래스 모음

  • java.util: 확장 클래스 모음

  • java.io, java.nio: 입출력 관련 클래스 모음






import

다른 패키지의 클래스 사용 시 import문을 이용할 수 있다.
import문 사용 시 패키지명 생략 가능

// 패키지의 해당 클래스를 가져옴
import 패키지명.클래스명; 

// 패키지의 모든 클래스를 가져옴
import 패키지명.*;






3. 제어자(Modifier)


부가적인 의미를 부여하는 역할

  • 클래스, 필드, 메서드, 생성자 등에 적용

  • 접근 제어자와 기타 제어자가 있음






접근 제어자

public, protected, default, private 로 총 4가지 종류
접근 제한자별 제한 범위가 다름 (아래 표 참고)

출처: https://blog.naver.com/PostView.naver?blogId=heartflow89&logNo=220961166980&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView
  • public > protected > default > private

  • 접근 제어자를 작성하지 않을 경우 default에 해당






기타 제어자

static, final, abstract, native, transient 등이 있음

  • final: '변경할 수 없다'는 의미

    • 필드, 지역변수에 사용 → 상수(constant)로 만들어줌

    • 클래스 → 상속 불가

    • 메소드 → 메소드 오버라이딩 불가



  • static: '공통적인'이라는 의미

    • 변수 → 클래스 변수로 만들어줌

    • 메소드 → 클래스 메소드로 만들어줌

    • 초기화 블록



  • abstract: '추상적인'이라는 의미

    • 메소드 → 추상 메소드 (선언부만 있고 구현부는 없음)

    • 클래스 → 추상 클래스



  • 함께 사용 불가능한 제어자

    • final + abstract

    • static +abstract

    • private +abstract

    • private +final → 함께 사용할 필요 X






4. getter / setter


private 선언된 필드의 값을 수정하거나(setter) 읽어올 때(getter) 사용함

  • setter: 외부에서 메소드를 통해 데이터에 접근하도록 함 → 매개값 검증 → 유효한 값만 데이터로 저장

  • getter: 외부에서 객체의 필드 값을 적절하게 사용할 수 있도록 가공한 후 외부로 전달할 수 있도록 함




private 타입 필드명;

//getter 
// 필드 타입이 boolean일 때 메소드 명 → is필드명()
public 리턴타입 get필드명(){
	return 필드명;
}

//setter
public void set필드이름(){
	this.필드명 = 필드명;
}






5. 참고 자료


[JAVA] 자바 캡슐화 (Encapsulation) 개념 정리

[JAVA/자바] 접근제어자(접근제한자/Access Modifier)

기타 제어자

11.Java 자바 - Getter와 Setter 메소드

0개의 댓글