💡 먼저 보면 좋을 자료
Code States | OOP 심화(1) - 상속
객체의 속성과 기능을 캡슐로 집약하여 외부로부터 보호하는 것.
연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것.
목적
데이터 보호: 쉽게 중요한 데이터를 바꾸지 못하도록 함
불필요한 데이터 노출 방지: 정보 은닉이 주 목적 (외부에서 내부로의 직접적인 접근 및 수정 제한)
캡슐화 수단으로 접근제어자(Access Modifier) 사용
목적을 공유하는 인터페이스 및 클래스들의 집합
→ 그룹 단위로 관리하기 때문에 효율적
계층 구조 구분: .
패키지가 존재한다면 가장 첫 줄에 패키지 선언을 진행해야함(없으면 익명 패키지에 속함)
클래스명간 충돌을 방지할 수 있음
java.lang
: 기본 클래스 모음
java.util
: 확장 클래스 모음
java.io
, java.nio
: 입출력 관련 클래스 모음
다른 패키지의 클래스 사용 시
import문
을 이용할 수 있다.
import문
사용 시 패키지명 생략 가능
// 패키지의 해당 클래스를 가져옴
import 패키지명.클래스명;
// 패키지의 모든 클래스를 가져옴
import 패키지명.*;
부가적인 의미를 부여하는 역할
클래스, 필드, 메서드, 생성자 등에 적용
접근 제어자와 기타 제어자가 있음
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
private 선언된 필드의 값을 수정하거나(setter) 읽어올 때(getter) 사용함
setter
: 외부에서 메소드를 통해 데이터에 접근하도록 함 → 매개값 검증 → 유효한 값만 데이터로 저장
getter
: 외부에서 객체의 필드 값을 적절하게 사용할 수 있도록 가공한 후 외부로 전달할 수 있도록 함
private 타입 필드명;
//getter
// 필드 타입이 boolean일 때 메소드 명 → is필드명()
public 리턴타입 get필드명(){
return 필드명;
}
//setter
public void set필드이름(){
this.필드명 = 필드명;
}
[JAVA] 자바 캡슐화 (Encapsulation) 개념 정리