bdfgdfg

제어자, 캡슐화/은닉성 본문

웹프로그래밍/Java

제어자, 캡슐화/은닉성

marmelo12 2023. 7. 26. 13:05
반응형

제어자

제어자는 클래스,변수 또는 메서드의 선언부에 사용되어 부가적인 의미를 부여.

크게 여기서 알아볼건 public,protected,default, private등이고, 그 외 static,final,abstract,synchronized,volatile등이 있다.

접근 제어자

접근제어자는 클래스,멤버변수,메소드,생성자에 사용되며 이름 그대로 접근 수준의 레벨을 부여하는 것.

private - 같은 클래스 내에서만 접근이 가능.

default - 같은 패키지 내에서만 접근이 가능. (참고로 접근제어자가 지정되어 있지않다면 이 접근제어자가 기본값.)

protected - 같은 패키지 및 다른 패키지의 자손클래스에서 접근이 가능.

public - 접근 제한이 전혀없음.

 

접근 제어자를 이용하는 이유는 캡슐화/은닉성과 연관이 있다.

자동차 객체의 시동을 켜는 메소드가 존재한다고 보자.

Car car = new Car();
car.startCar();

100%는 이런식으로 사용을 하겠고, 또한 그게 맞지만 만약 Car클래스의 내부 멤버변수가 public 접근 제어자를 가져 쉽게 접근이 가능하다면.

Car car = new Car();
car.engine = false;

위와 같이 메소드를 통해 정상적으로 오류없이 동작하게끔 하는 코드를 내부적으로 수정해버려 의도치않은 오류가 발생할 수 있다.

그렇기에 내부 멤버는 숨기는게 best이되, 만약 내부 멤버값을 외부에 공개해야한다면 get(), 수정해야한다면 set()함수등을 통해서 안전하게 접근하는게 좋다.

 

 

반응형
Comments