코딜기
[Java] 정보은닉(Infomation Hiding) 본문
반응형
정보은닉(Infomation Hiding)이란?
- 정보 은닉이란 객체의 상태를 숨기고 외부에서 접근할 수 없도록 보호하는 것을 의미합니다.
- 정보 은닉을 사용하면, 객체의 필드에 불필요한 값이나 문제가 발생할 수 있는 값들이 직접 들어오는 것을 막을 수 있습니다.
- 그렇기 때문에 접근 제한자를 적절하게 이용하여 직접적인 접근을 막고, 메서드를 통해 접근하게 하는 것이 정보 은닉입니다.
정보은닉을 고려하지 않았을 때의 문제점
public class Car {
String model; // 모델명
int speed; // 현재 속도
public Car(String model) {
this.model = model;
}
}
- 위와 같은 Car 클래스가 있고, 이를 통해 Car의 속성을 가진 테슬라 객체를 만든다고 가정합니다.
public class Main {
public static void main(String[] args) {
Car tesla = new Car("테슬라");
tesla.speed = 1000000000;
tesla.speed = -124398523;
}
}
- 모델명이 테슬라인 객체를 만들고 속성 중 하나인 speed를 초기화해 줍니다.
- int 형태로 speed를 선언했으므로, 위의 코드는 오류 없이 실행이 됩니다.
- 하지만, 현실적으로 1,000,000,000, -124,398,523와 같은 속도는 현실성이 떨어집니다.
- 따라서 변수에 들어갈 값을 선택적으로 받기 위해서 정보 은닉의 개념이 사용됩니다.
정보은닉 사용
- 필드에 접근제한자 private을 붙여서 외부로부터의 접근을 막습니다.
- setter 메서드를 통해서 private로 선언된 변수를 선택적으로 초기화 및 수정을 해줍니다.
- getter 메서드를 통해서 값을 꺼낼 수 있습니다.
setter와 getter
- setter와 getter 메서드는 접근 제한을 public으로 지정하여 어디서든 접근이 가능하게 합니다.
- setter 메서드 : 매개값을 받아 유효성 검사를 진행한 후에 적절한 값들만 초기화 및 수정을 하고, 잘못된 값을 거릅니다.
- getter 메서드 : 필드값을 리턴하는 행위를 담당합니다.
public class Car {
private String model; // 모델명
private int speed; // 현재 속도
public Car(String model) {
this.model = model;
}
// setter: 필드값 변경을 대리하는 메서드
public void setSpeed(int speed) {
if (speed < 0 || speed > 200) {
System.out.println("속도가 올바르지 않습니다.");
return;
}
this.speed = speed;
}
// getter: 은닉된 필드값을 참조하는 메서드
public int getSpeed() {
return this.speed;
}
}
※ speed 변수를 보호하여 잘못된 값으로 초기화 및 수정되는 상황을 방지할 수 있습니다.
반응형
'Language > Java' 카테고리의 다른 글
[Java] static (static 필드, static 메서드) (0) | 2024.08.27 |
---|---|
[Java] 캡슐화 (Encapsulation) (0) | 2024.08.27 |
[Java] 생성자(Constructor) (0) | 2024.08.26 |
[Java] 객체 지향 프로그래밍 (Object-Oriented Programming, OOP) (0) | 2024.08.26 |
[Java] 가변 파라미터 (0) | 2024.08.26 |
Comments