본문 바로가기

두두의 IT

[OOP] 접근지정자(Access Specifier)

728x90

접근지정자(Access Specifier)

: 클래스나 멤버들을 다른 클래스에서 접근해도 되는지 여부를 선언하는 것


Java 

  • public
    • 패키지와 상관없이 모든 클래스들이 접근 가능한 것
    • 슈퍼 클래스의 public 멤버 : 서브 클래스는 항상 접근 가능
  • protected
    • 다른 패키지 내 클래스 접근
    • 대신 부모와 자식 간에만 공유가 가능하고, 메인클래스에서 다른 패키지의 변수에 직접 접근하는 것은 불가능함
    • 슈퍼클래스의 protected 멤버 : 같은 패키지 내의 모든 클래스 접근 허용. 패키지 여부와 상관없이 서브클래스는 접근 가능
  • default
    • 슈퍼클래스의 default 멤버 : 서브 클래스가 동일한 패키지에 있을 때, 접근 가능
  • private
    • 클래스 내의 멤버에게만 접근이 허용되는 것
    • 슈퍼 클래스의 private 멤버 : 서브 클래스에서 접근할 수 없음

Kotlin

  • default
    • 모두 공개
  • internal
    • 같은 모듈 내에서만 볼 수 있으며, 모듈은 한거번에 컴파일되는 코틀린 파일들
    • 패키지 전용 가시성에 대한 대안
  • protected
    • 오직 어떤 클래스나 그 클래스를 상속한 클래스 안에서만 보임
    • 클래스를 확장한 함수는 그 클래스의 private이나 protected 멤버에 접근할 수 없음
  • private
    • 같은 클래스 안에서만 볼 수 있음

'두두의 IT' 카테고리의 다른 글

[OOP] 추상클래스와 인터페이스  (0) 2022.04.11
[Kotlin] annotation class  (0) 2022.04.11
[Kotlin] enum class  (0) 2022.04.11
[Java, Kotlin] final / open  (0) 2022.04.11
[Java, Kotlin] 생성자  (0) 2022.04.11