728x90

코틀린에서의 접근 제한자

    • public : 모든 곳에서 접근 가능, 명시하지 않으면 기본적으로 public (어디서나 접근가능,보통 명시하지 않음) 
    • protected : 선언된 클래스 또는 하위 클래스에서만 접근 가능 (기본적으로 private지만 상속을 받은경우 타 모듈에서 접근가능)
    • internal : 같은 모듈에서만 접근 가능
    • private : 선언된 클래스 내에서만 접근 가능(동일한 클래스 내부에서만 접근가능)

프로젝트란 최상단의 개념이고 <모듈> <패키지> <클래스>를 포함한다.

Project -> app -> pakage -> class

 

모듈이란 프로젝트 아래의 개념이고 <패키지><클래스>를 포함한다.

모듈 : app -> pagakge -> class


패키지란 모듈 아래의 개념이고 <클래스>를 포함한다

pakage : pakage -> class

 

접근제한자는 변수, 함수, 클래스, 생성자, 프로퍼티등에 쓰임 

public class Ex{ //보통 public은 따로 명시하지 않음
    protected var value = "value"
    private fun publicFunction(){}
    internal constructor() 
}

 

 

 

내부클래스서만 사용하던걸 특정 권한이 있는 클래스에게만 접근할 수 있게 해준다.

여기서 특정 권한을 가지려면 protected가 존재하는 부모클래스를 상속받는다. 

open class Parent{
    protected var name = "이름"
}
class Child: Parent() {
    val childInstance = Child()
    init {
        childInstance.name
    }
}

//상속관계에서는 protected에 접근가능 

 

 

접근제한자는 적절하게 사용해야함

  • 접근권한을 통해 데이터에 무분별한 접근을 막을 수 있다. ex) private을 이용해서 보호해야할 정보를 감춤
  • 클래스들간에 접근하면 안되는 상황을 구분하기 때문에 향후에 유지보수 하기에 용이해요

 

 

+ Recent posts