1. 캡슐화

  • 캡슐화란 객체의 내부 구조 및 데이터를 캡슐처럼 감싸 외부에서 직접 볼 수 없게 은닉하여 보호하는 것을 말한다.
  • 이를 위해서 클래스와 멤버변수(필드), 멤버함수(메소드)는 외부에서 접근가능한 범위를 지정할 수 있는 접근제어자와 함께 사용된다.
  • 멤버변수의 경우 보통 private키워드를 사용하여 외부로부터의 직접적인 접근을 막고, 흔히 getter/setter라 부르는 멤버함수(메소드)를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 한다. 

 

2. 정보은닉

  • 프로그램의 세부적 구현사항을 외부로 드러내지 않도록 하는 것이다.
  • 캡슐화(Encapsulation)을 정보 은닉(information hiding) 그 자체로 혼동하는 경우가 많은데, 이는 대부분의 경우 캡슐화에 정보 은닉이 동반되도록 프로그램을 구현하는 경우가 많기 때문이다.
  • 따라서, 대부분의 경우 클래스 외부에서는 바깥으로 노출된 특정 메소드에만 접근이 가능하게하여 내부가 어떤 식으로 처리되는지를 알지 못하도록 설계된다.

 

3. 실습예제

 

MotorBike.java

package UdemyJava;

public class MotorBike {

    private int speed; //접근제어자로 외부에서 접근 불가하게 변수 설정

    void setSpeed(int speed) { //변수를 읽고 가져올수 있도록 getter/setter메소드를 생성

        if (speed > 0) {
            this.speed = speed;
        }
    }

    int getSpeed() { //변수를 읽고 가져올수 있도록 getter/setter메소드를 생성
        return speed;
    }

    public void increaseSpeed(int howMuch) {
        this.speed = this.speed + howMuch;
    }

    public void decreaseSpeed(int howMuch) {
        this.speed = this.speed - howMuch;
    }
}

 

MotorBikeRunner.java

package UdemyJava;

public class MotorBikeRunner {

    public static void main(String[] args) {

        MotorBike ducati = new MotorBike(); // MotorBike 클래스를 이용해 객체 생성
        MotorBike honda = new MotorBike();  // MotorBike 클래스를 이용해 객체 생성


        ducati.setSpeed(100); // setter메소드를 이용해 변수값 설정

        ducati.increaseSpeed(100);
        ducati.decreaseSpeed(50);

        honda.increaseSpeed(100);
        honda.decreaseSpeed(50);

        System.out.println(ducati.getSpeed()); // getter 메소드를 이용해 변수의값을 가져온다
        System.out.println(honda.getSpeed());  // getter 메소드를 이용해 변수의값을 가져온다


    }
}

'Java Study' 카테고리의 다른 글

Java Study(배열/키 값)  (0) 2023.04.04
Java Study(상속/오버라이딩)  (0) 2023.03.31
Java Study(생성자/접근제한자)  (0) 2023.03.30
Java(class/object)  (0) 2023.03.29
Java (method/메소드)  (0) 2023.03.28

+ Recent posts