안드로이드(Android)/이론
[Kotlin] 접근 제한자(public, private, internal, protected)
리안94
2023. 4. 10. 20:33
기본적으로 코틀린은 모든 클래스, 변수들은 public으로 선언됩니다.
// 두가지는 동일한 내용
public val a = "이것"
val a = "이것"
public class A{
...
}
class A{
...
}
접근 제한자에 대한 설명은 아래와 같습니다.
- public : Top Level 선언이 가능하며, 모든곳에서 접근이 가능합니다.
- private : Top Level 선언이 가능하며, 같은 코틀린 파일내에서만 접근 가능합니다.
- internal : Top Level 선언이 가능하며, 같은 모듈내에서만 접근 가능합니다. 따라서 해당 접근자를 통하여 모듈화를 쉽게 할 수 있습니다.
※ 접근 시, 변수 또는 메소드는 internal 또는 private 접근 제한자를 가져야합니다.
(모듈 내에서만 접근 가능해야하는데, 외부에서 접근이 가능해진다면 모듈화가 깨지기 때문입니다.)
internal class Utils{
fun print() = print("A")
}
class B{
val b = Utils() // 에러발생
internal val c = Utils()
private val d = Utils()
}
- protected : Top Level에서 선언이 불가능하며, 어떤 클래스 내 또는 해당 클래스를 상속받은 경우에 접근가능합니다.
※ Top-Level에서 protected 접근 제한자를 사용하면 아래와 같은 에러가 발생합니다.
protected class C{ // Error
...
}
※ 아래와 같이 상속받지 못한 경우는 에러가 발생합니다.
open class A{
protected val b = "BB"
}
class B : A(){
val a = b
}
class C{
val a = b // Error
}