외부에서 클래스를 이용할 때 


클래스 내부의 필드는 못 사용하게 하고, 메소드는 사용할 수 있게 설정할 수 있는 이유는


JAVA에 접근 지정자가 존재하기 때문이다.



접근 지정자는 외부에서 클래스를 접근할 때 접근 하는 범위를 한정하겠다는 의미이다.


접근 지정자는 좁은 범위에서부터 private, default, protected, public 4가지로 나뉘어져 있다.





#private


private으로 선언된 것은 외부에서 직접적인 사용이 불가능하다.


필드(field)의 경우에는 외부에서 내부의 필드를 직접이용할 수 없고.


메소도(method)의 경우에도 메소드를 직접 접근할 수 없게 된다.




private은 주로, 데이터의 손실과 소멸을 방지하기 위해, 


클래스(class)내부의 데이터의 직접적인 접근을 금할 때 사용된다.


클래스를 상속받을 때 부모클랙스의 모든 것을 자식클래스가 이용가능하다고 말하나. 


private field나 method를 가진 클래스를 상속받으면


private으로 적힌 것들은 자신의 것처럼 직접적으로 이용할 수 없다.


왜냐하면, 자기 자신 이외에는 아무도 접근할 수 없게 명시하였기 때문이다.





#default


자바(Java)에서 프로젝트(Java Project)를 먼저 생성하게 되면, src 폴더가 생성되는데,


개발자는 주로 여기에 패키지(Package)를 만들어, 자바(Java)의 클래스파일들을 효율적으로 관리한다.




default로 선언되게 되면, 같은 Package내에 있는 모든 곳에서 접근할 수 있게 된다.


필드나 메소드를 만들때, 앞에 접근 지정자를 적지 않으면, 


기본적으로 default로 인식한다.





#protected


protected는 주로 상속관계를 사용할 때 자주 볼 수 있는데,


Package의 동일유무와 상관없이 protected가 선언된 클래스를 상속받은 모든 클래스들은 


상속받은 클래스 내부의 protected타입의 모든 것을 자신의 것처럼 이용할 수 있다.





#public 


우리가 클래스에서 가장 많이 볼 수 있는 접근 지정자로,


클래스 내부의 public 으로 선언된 모든 것을 제한없이 외부의 어떤 곳이든지 이용할 수 있다.


Package동일유무, 상속유무와 상관없이 어떤 클래스라도 사용이 가능하며,


대부분의 클래스의 메소드들은 클래스내부의 필드를 


간접적으로 접근하여 이용할 수 있도록 하기 때문에, public으로 선언되어 있다.

'JAVA' 카테고리의 다른 글

IntelliJ 설치  (0) 2018.10.26
final  (0) 2018.01.19
cmd로 클래스 실행  (0) 2018.01.19
class간의 관계  (0) 2018.01.18
Class의 기본구조  (0) 2018.01.18

+ Recent posts