Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- Oracle
- 스프링 부트
- 리캡차
- 자바
- Create
- 구글 리캡차
- 기술면접
- css position
- 네트워크
- 속성
- 80 to 443
- 시맨틱 태그
- cs질문
- 스프링부트
- multiarray
- html요소
- position속성
- css
- html
- Failed to read the 'responseText' property from 'XMLHttpRequest'
- database
- CSS display 속성
- Rename to
- 신입개발자
- 예외처리
- 자바의 장점
- 바닐라js
- tcp와 udp의 차이점
- 기술 면접
- Java
Archives
- Today
- Total
Building value
Java[캡슐화(Encapsulation)] 본문
반응형
캡슐화(Encapsulation)는 객체지향 프로그래밍에서 중요한 개념 중 하나입니다.
캡슐화는 객체의 상태와 행동을 외부에서 직접적으로 접근하지 못하도록 보호하는 것을 의미합니다.
캡슐화를 통해 객체는 자신의 내부 구현을 숨길 수 있으며,
외부에서 객체의 상태를 변경하거나 객체의 내부를 직접 조작하지 않도록 할 수 있습니다.
이를 통해 코드의 안정성을 높일 수 있습니다.
예를 들어, 자동차 객체를 생각해보겠습니다. 자동차 객체는 다양한 상태와 행동을 가지고 있을 것입니다.
현재 속도, 연료량, 차량 번호 등의 상태와 주행, 정지, 가속 등의 행동이 있을 수 있습니다.
이때, 자동차 객체를 캡슐화하여 외부에서 상태와 행동을 직접 조작하지 못하도록 보호할 수 있습니다.
public class Car {
private int speed;
private int fuel;
private String number;
public void start() {
// ...
}
public void stop() {
// ...
}
public void accelerate(int amount) {
// ...
}
// getter와 setter 메서드는 상태를 읽거나 변경하기 위한 public 메서드입니다.
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getFuel() {
return fuel;
}
public void setFuel(int fuel) {
this.fuel = fuel;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
위 코드에서 speed, fuel, number 변수는 private으로 선언되어 있습니다.
따라서 외부에서 이 변수들에 직접 접근할 수 없습니다.
대신, getSpeed(), setSpeed(), getFuel(), setFuel(), getNumber(), setNumber()와 같은 public 메서드를 통해
상태를 읽거나 변경할 수 있습니다. 이러한 메서드를 getter와 setter 메서드라고 합니다.
이렇게 캡슐화를 적용하면 자동차 객체를 사용하는 다른 코드에서 실수로 상태를 변경하거나 조작하는 일이 없도록 할 수 있습니다.
객체의 내부 구현을 변경하더라도 이를 사용하는 외부 코드에 영향을 미치지 않도록 보호할 수 있습니다.
반응형
'Java' 카테고리의 다른 글
Java[인터페이스(Interface)] (0) | 2023.03.23 |
---|---|
Java[추상화(Abstraction)] (0) | 2023.03.23 |
Java[다형성(Polymorphism)] (0) | 2023.03.23 |
Java[상속(Inheritance)] (0) | 2023.03.23 |
Java[객체.Object] (0) | 2023.03.23 |