[Java] 객체지향 프로그래밍 - 캡슐화

·2022년 9월 7일
0

Java

목록 보기
4/14
post-thumbnail

캡슐화

캡슐화

캡슐화란?

  • 특정 객체 안에 관련되 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것

캡슐화의 목적

  1. 데이터 보호
  2. 내부적으로 사용되는 데이터에 대한 불필요한 외부 노출 방지

    💡 정보 은닉이 주 목적

패키지

패키지란?

  • 특정한 목적을 공유하는(서로 관련된) 클래스와 인터페이스의 묶음

패키지 사용 목적

  1. 클래스들을 그룹 단위로 묶어 효과적으로 관리하기 위해
  2. 클래스의 충돌을 방지해주는 기능을 한다.

패키지의 선언

  1. 패키지는 소스파일(.java)의 첫 번째 문장으로 단 한번만 선언.
  2. 같은 소스파일의 클래스들은 모두 같은 패키지에 속하게 된다.
  3. 패키지 선언이 없으면 이름 없는(Unnamed)패키지에 속한게 된다.

import문

import문을 사용하는 이유

  • 다른 패키지 내의 클래스를 사용하기 위해

import문의 선언

1. import문을 사용하지 않는 경우

java.util.Date today = new java.util.Date();

패키지이름을 클래스 앞에 다 붙여주어야 한다.


2. import문을 사용하는 경우

import java.util.Date;

Date today = new Date();import 패키지명.클래스명; 또는 import 패키지명.*; (* = all)로 선언할 수 있따.
  • import문은 패키지문과 클래스 선언 사이에 선언한다.

    💡만약 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지 명을 붙여줘야 한다.

static import문

  • static 멤버를 사용할 때 클래스 이름을 생략할 수 있도록 한다.
import static java.lang.Integer.*;   //Integer클래스의 모든 static 메서드
import static java.lang.Math.random; //Math.random()만. 괄호 안붙임
import static java.lang.System.out;  // System.out을 out만으로 참조 가능 static import문을 사용함으로써
System.out.println(Math.random());   ====> out.println(random());
으로 생략하여 사용할 수 있다.  

제어자(Modifier)

  • 클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드
  • 하나의 대상에 여러개의 제어자를 사용할 수 있으나 접근 제어자는 단 하나만 사용 가능하다.

접근 제어자

  • 클래스 외부로의 불필요한 데이터 노출을 방지
  • 외부로부터 데이터가 임의로 변경되지 않도록 방지
  • 접근 제어자를 작성하지 않으면 자동으로 default값으로 지정된다.
  • public > protected > default > private

기타 제어자

  • static, final, abstract, native, transient, synchronized 등

static (클래스의, 공통적인)

  • 대상 : 멤버변수 , 메서드, 초기화 블럭

final (마지막의, 변경될 수 없는)

  • 대상 : 클래스, 메서드, 멤버변수, 지역변수
final class FinalTest {              // 상위클래스가 될 수 없는 클래스
	final int MAX_SIZE = 10;         // 상수
    
    final void getMaxSize() {        // 오버라이딩할 수 없는 메서드(변경불가)
    	final int LV = MAX_SIZE;     // 상수
        return MAX_SIZE;

abstract (추상의, 미완성의)

  • 대상 : 클래스, 메서드
abstract class AbstractTest{    // 추상 클래스(추상 메서드를 포함한 클래스)
      abstract void move();     // 추상 메서드(구현부({})가 없는 메서드
  • abstract 클래스는 미완성의 클래스이기 때문에 객체를 생설할 수 없다.

setter와 getter 메서드

  • private 접근 제어자가 붙은 객체의 접근하는 메서드

setter 메서드

  • 외부에서 데이터 값을 변경 가능하게 해주는 메서드
set변수명() 으로 접근

getter 메서드

  • setter메서드로 설정한 변수의 값을 읽어오는데 사용하는 메서드
get변수명() 으로 접근
profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글