728x90
코틀린에서의 접근 제한자
- public : 모든 곳에서 접근 가능, 명시하지 않으면 기본적으로 public (어디서나 접근가능,보통 명시하지 않음)
- protected : 선언된 클래스 또는 하위 클래스에서만 접근 가능 (기본적으로 private지만 상속을 받은경우 타 모듈에서 접근가능)
- internal : 같은 모듈에서만 접근 가능
- private : 선언된 클래스 내에서만 접근 가능(동일한 클래스 내부에서만 접근가능)
프로젝트란 최상단의 개념이고 <모듈> <패키지> <클래스>를 포함한다.
모듈이란 프로젝트 아래의 개념이고 <패키지>와 <클래스>를 포함한다.
패키지란 모듈 아래의 개념이고 <클래스>를 포함한다
접근제한자는 변수, 함수, 클래스, 생성자, 프로퍼티등에 쓰임
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을 이용해서 보호해야할 정보를 감춤
- 클래스들간에 접근하면 안되는 상황을 구분하기 때문에 향후에 유지보수 하기에 용이해요