3.5.1 접근제어란?
지금까지 public이라는 것을 많이 보았을 것이다. 별다른 설명 없이 여기까지 왔지만 메서드를 배우고 나면 제일 먼저 객체지향에서 논하는 주제가 바로 private과 public이다. 메서드의 학습 없이 private과 public을 논할 수 없기 때문에 지금까지 미루어 왔던 것이다. 메서드의 기초적인 개념을 배웠으니, 이제 접근제어에 대해서 알아보자.
접근제어란 새로운 데이터 타입을 만들고, 그 데이터 타입으로 객체를 선언한 후 객체 내의 멤버 변수에 값을 할당할 때, 값을 직접 할당할 수 있는가 없는가를 결정하는 접근 지정자(Access Identifier)를 말한다. 구조체의 경우 모든 멤버에 대해 직접할당을 원칙으로 한다.
하지만 클래스를 이용해서 만든 새로운 데이터 타입일 경우에는 이것을 private과 public으로 제어할 수 있다. private인 경우에는 값을 직접 할당할 수 없다. 이 말은 멤버의 접근이 private이면 점(.)찍고 접근할 수 없다는 의미이다. 당연히 public인 경우에만 값을 직접 할당할 수 있다.
□ public
◇ 값을 직접 접근할 수 있다.
□ private
◇ 값을 직접 접근할 수 없다.
보통 이러한 접근제어를 자료의 은폐화(Encapsulation)라고 표현한다. 이 은폐화는 아래와 같이 두 가지 측면에서 생각해 볼 수 있다.
□ 접근제어의 종류
◇ 객체를 이용한 멤버의 접근제어
◇ 상속관계에서 상위 클래스와 하위 클래스간의 접근제어
이 두 접근제어에 대한 분류는 미세한 차이를 보이고 있다. 첫 번째 접근제어는 이 장에서 자세하게 다루게 되며, 두 번째 접근제어는 상속을 학습할 때 만나게 될 것이다.
□ 접근제어란?
◇ 메모리를 보유한 객체를 이용해서 멤버에 점(.)찍고 접근할 수 있는지 없는지를 결정한다.
여기서 논의되는 접근제어는 객체를 생성하고 메모리를 할당한 후이며, 상속관계의 접근제어는 상속관계에서 클래스를 만들 때 다시 논의해보자. 여기서는 객체를 이용한 접근제어에 대해서만 알아보자.