Hello, Android!

지시자 본문

Kotlin

지시자

lwndnjs93 2020. 3. 17. 22:22

여러개의 클래스를 만들어 사용하다 보면

클래스 내의 프로퍼티, 메소드의 사용 범위를 제한해야 하는 경우가 생긴다

예를들어 프로퍼티를 값은 해당 클래스 내에서만 접근하도록 제한하기도 한다

이럴때 프로퍼티, 메소드의 접근 범위를 제한하는 것이 지시자 이다

private, public, protected, internal 이 있다

지시자 범위
private 외부에서 참조 불가
public 어디서든 접근 가능
protected

외부에서는 참조할수 없지만, 상속받은 자식 클래스는 참조 가능

internal 같은 모듈 내에서는 접근 가능

 

- private

PrivateClass는 지시자를 private로 제한하였기 때문에 다른 파일에서는 접근이 불가능하다

같은 파일 내에서도 다른 클래스에서 private클래스의 객체를 생성하기 위해서는 객체도 private로 생성해야한다

private클래스의 객체를 생성했지만 num1과 privateFunc도 private으로 제한되어있기때문에 참조할수 없다

 

- protected

protected는 최상위에 선언된 요소에서는 지정할수 없고, 클래스, 인터페이스와 같은 요소의 멤버에만 

지정할 수 있으며, 멤버가 클래스인 경우에는 protected로 선언할 수 있다

protected는 자기 자신과 상속받은 자식 클래스까지 사용이 가능하다

그렇기 때문에 main에서 ProtectedClass와 NotProtectedClass의 객체를 생성하고

지시자가 없는 두 함수는 호출이 가능하지만 Protected클래스의 num1에는 접근이 불가능하다

 

- internal

internal은 프로젝트 단위의 모듈을 의미하기도 하며, 모듈이 달라지면 접근할수 없다

하지만 프로젝트에 모듈이 하나만 존재한다면 internal의 접근 범위는 프로젝트 전체가 된다

 

위의 두 코드는 서로 다른 파일에 작성하였지만, InternalClass의 지시자가 internal이기때문에

다른 같은 모듈의 다른 파일에서 바로 접근이 가능하다

만약 같은 모듈이지만 패키지 이름이 다르다면 internal 클래스가 있는 패키지를 import해야한다

'Kotlin' 카테고리의 다른 글

프로퍼티 접근자  (0) 2020.03.21
클래스의 관계  (0) 2020.03.20
인터페이스  (0) 2020.03.16
이너클래스 inner class  (0) 2020.03.16
super this  (0) 2020.03.15