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 |