ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체 지향1. 캡슐화(Encapsulation)은 무엇일까?
    Java 2018. 7. 13. 15:23
    반응형





    객체 지향이 가지는 특징에 대해 자세히 알아보고 싶어 작성하였습니다. ^^






    1. 캡슐화(Encapsulation)이란?

      - 데이터와 데이터를 처리하는 함수를 하나의 단위로 묶은 것입니다.

      - 캡슐화를 통해 객체의 정보를 보호하고 정보를 은닉(Data Hiding)합니다. 

        ▶ 각 객체끼리의 응집도는 높아지고, 결합도는 낮아집니다. 

        ▶ 결합도가 낮아지니 생산성이 높아집니다.

      - 캡슐화 된 클래스의 변수들은 접근제어자(Access Modifier)를 통해 접근을 제어합니다. 

      - private를 사용하여 클래스 내부의 변수를 선언합니다.

      - setter, getter 메서드를 통해 변수의 값들을 조회하거나 수정할 수 있습니다.






    2. 접근 제어자 ( Access Modifier )

      - 접근 제어자로는 public > protected > default > private 로 4가지 입니다.

      - 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 합니다.

      - 접근 제어자를 생략하면 자동으로 default가 됩니다. 

      - 접근 제어자는 클래스, 멤버 변수,  메서드, 생성자에 사용될 수 있습니다.

      - 접근 제어자를 통해 외부로부터 데이터를 변경하지 못하게 데이터를 보호하고, 접근을 제한합니다.


    종류 

    모든 클래스 

    하위 클래스

    동일 패키지

    현재 클래스

     public

     O

     O

     O

     O

     protected

     X

     O

     O

     O

     default

     X

     X

     O

     O

     private

     X

     X

     X

     O






    * 간단한 예시를 만들어보았습니다. 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class RentCar {
        private String model;
        private String color;
        
        public RentCar(String model, String color) {
            this.model = model;
            this.color = color;
        }
     
        public String getModel() {
            return model;
        }
     
        public void setModel(String model) {
            this.model = model;
        }
     
        public String getColor() {
            return color;
        }
     
        public void setColor(String color) {
            this.color = color;
        }
    }
     
     
     
     
    cs

      - RenCar라는 클래스에서 인스턴스 변수인 model, color는 private으로 선언하였습니다.
        private으로 선언하였기에 model, color에 접근을 제한하고 메소드는 public으로 setter, getter를 이용해 접근할 수 있도록 하였습니다.
         




    반응형
Designed by Tistory.