티스토리 뷰
이번시간에는 접근제어(access control)에대해서 공부해보도록 합시다. 접근제어란 무엇이냐..? 만약 어느 회사에서 직원의 신상정보에 관한 클래스가 있다고 생각해봐요. 누구나 그 클래스에 접근하여 신상정보를 변경하거나 (특히 주민번호, 계좌번호 등등)하면 엄청난 문제가 일어날 수 있습니다. 그래서 클래스의 멤버(필드와 메소드)에 접근하는것에 있어서 제어하는것을 접근제어 라고합니다. 이런 접근제어는 과연 어떤것들이 있을까요? 우리가 많이 보았던 대표적인 public, private, protected, 그리고 아무것도 적히지 않은 default가 있습니다.
1.public - 멤버앞에 붙게되면 그 멤버는 누구나 자유롭게 접근할수 있는 멤버가 됩니다.
2.private - 전용이라는 의미로 그 해당 클래스 안에서만 접근가능한 멤버가 됩니다.
3.protected - 부모클래스와 자식클래스만이 접근할수 있는 멤버가 됩니다.(상속에서 다시 이야기해 봅시다!)
4.default - 사실 지금까지 가장 많이본 것인데 앞에 아무것도 적혀있지 않을때! 그때는 동일한 패키지 안에서만 접근가능한 멤버가 됩니다.
위를 보시면 A라는 이름의 클래스를 생성하고 Test클래스의 메인메소드 안에 obj를 참조변수로 갖는 객체를 생성하여 그 멤버들의 값을 설정하였습니다. 하.지.만....
a는 public이므로 누구나 자유롭게 접근할수 있기에 상관이 없고, b역시 default 임으로 같은 패키지 안에서는 접근가능함으로 역시 상관이 없지만, c는 private 가 앞에 붙었음으로 동일한 클래스 내에서만 접근이 가능합니다. A라는 클래스를 벗어나게 되면 접근 할 수 없게 되는 것 이죠. (사실 패키지를 만들지 않았기에 default패키지에 같이 속하게 됩니다)
앞에서는 필드에대해서만 언급을 하였지만, 메소드 역시 마찬가지 입니다. 여기까지 접근 제어 access control에 대해서 공부하도록 합시다 !!!
'Java 공부일지' 카테고리의 다른 글
생성자(Constructor) (0) | 2018.03.05 |
---|---|
접근자와 설정자 (0) | 2018.03.03 |
String 클래스 사용 (0) | 2018.03.02 |
UML (0) | 2018.03.02 |
메소드 오버로딩 (0) | 2018.03.02 |