코틀린 Visibility modifiers

Ham's Velog·2022년 6월 25일
1
post-thumbnail

Visibility modifiers

📢 *Visibility modifiers 이란?
Visibility modifiers란 class, interface, fun, property, object, constructor 등 객체의 범위를 지정해주는 키워드 이다.

주의사항
**로컬 변수, 로컬 함수, 로컬 클래스는 Visibility Modifier를 가질 수 없다.

*Visibility modifiers : 가시성 수정자 혹은 접근 제한자(Access Modifier)


Visibility modifiers 종류

  • Private : 해당 파일이나 클래스 내에서만 사용 가능
  • Public : 어디서든 접근 가능하며 함수 혹은 클래스 앞에 아무것도 없다면 default 지정
  • Protected : 상속받은 인터페이스, 클래스, 자식 클래스에서만 접근 가능
  • internal : 같은 모듈 안에서 접근 가능

예시

open class Outer {
    private val a = 1
    protected open val b = 2
    internal open val c = 3
    val d = 4  // default 값은 public 이다.

    protected class Nested {
        public val e: Int = 5
    }
}

class Subclass : Outer() {
    // a 접근 불가
    // b, c, d 접근 가능
    // Nested, e 접근 가능

    override val b = 5   // b 는 protected 이므로 접근 가능
    override val c = 7   // c 는 internal 이므로 접근 가능
}

class Unrelated(o: Outer) {
    // o.a, o.b 접근 불가
    // o.c, o.d 접근 가능 (같은 모듈)
    // Outer.Nested, Nested::e 접근 불가
}
profile
#안드로이드개발자

0개의 댓글