관리 메뉴

제뉴어리의 모든것

[Section1][Java] 객체지향 프로그래밍 심화 - 캡슐화에 대하여 본문

코드스테이츠/정리 블로깅

[Section1][Java] 객체지향 프로그래밍 심화 - 캡슐화에 대하여

제뉴어리맨 2022. 7. 13. 10:57

캡슐화란

특정 한 클래스안에 필요하고 서로 연관된 속성(변수), 기능(메소드)를 묶어서 정의하고 외부로부터 데이터를 보호하는것.

 

캡슐화의 목적

1. 외부로부터 내부 데이터 보호 

2. 외부에 노출이 불필요한 코드를 숨겨 코드의 복잡성을 줄여줌.

 

캡슐화의 장점

1. 외부로부터 보호되므로, 데이터가 무자비로 변경되는 경우를 방지

2. 각각의 객체들은 다른 객체와의 연관관계를 줄여서 한 객체에서 발생되는 문제가 다른객체에게 영향을 미치는 일을 줄임.

 

패키지란

클래스와 인터페이스의 묶음. 쉽게 말해 폴더(디렉토리)

 

패키지 사용 이유

클래스와 인터페이스를 효율적으로 관리하기 위해.

우리가 왜 파일들을 폴더에 넣는가?

모든 종류의 파일이 바탕화면에 다 있는것보다,

게임은 게임폴더에, 프로그래밍 프로그램은 프로그래밍 폴더에 있는게 더 효율적이지 않은가?

그 이유다.

그리고 만약 게임폴더와 프로그래밍 폴더에 똑같은 이름의 파일이 있다.

이 경우, 게임 폴더에 있는 ~파일, 프로그래밍 폴더에 있는 ~파일로 구분 가능하다.

 

 

패키지 선언

.java 파일 최상단에
현재 파일이 속한 패키지가 무엇인지 선언해줘야 한다.
해주지 않으면 이름없는 패키지에 속함

// 패키지를 생성했을 때
package practicepack.test; // 패키지 구문 포함. PackageEx 클래스 파일이 src 디렉토리 바로 하단에 있다면 없을것.

public class PackageEx {

}

 

패키지 추가 방법

import [패키지명.클래스]
import [패키지명.*]

 

import 참고사항

import문은 컴파일시에 처리 되므로 성능에 문제 없음

 

 

제어자란

클래스. 변수. 메서드, 생성자등에 기타적인 의미를 부여하는 키워드

접근제어자 + 기타제어자

 

접근제어자란

클래스. 변수. 메서드, 생성자등에 접근에대한 기준을 정의하는 키워드.


- public
접근제한 X


- protected
같은 패키지만 + 타 패키지여도 자손이면 OK


- default (기본값)
같은 패키지내만


- private
자기 클래스내에서만

 

기타제어자란

클래스. 변수. 메서드, 생성자등에 성질을 정의 하는 키워드.

 

EX :

abstract, final, static 등등...