외부에서 클래스를 이용할 때
클래스 내부의 필드는 못 사용하게 하고, 메소드는 사용할 수 있게 설정할 수 있는 이유는
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 |