Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린
  • 다이나믹 프로그래밍
  • java
  • Wil
  • 안드로이드
  • SQL
  • til
  • rsocket
  • 프로그래머스
  • grafana
  • 레포지토리
  • webflux
  • kibana
  • 백준
  • spring
  • 내림차순
  • Android
  • kotlin
  • enum
  • MariaDB
  • elasticsearch
  • 파이썬
  • ec2
  • 우아한테크코스
  • Docker
  • 프리코스
  • 코딩테스트
  • 문자열
  • 코틀린 인 액션
  • 에라토스테네스의 체

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

Android/Kotlin

[Kotlin] Package, 가시성 변경자(public,private,internal,protected)

2022. 9. 11. 21:03

Package

 

다른 package 참조 : import

shopping package의 class Cart 와 class Store 을 home package에서 참조하기 위해서는

import shopping.Cart
import shopping.Store

// 해당 패키지의 모든 하위 내용을 import
import shopping.*

class Home {
    val stroe = Strore()
    val cart = Cart()
}

 

Module

- 한 번에 compile 되는 묶음

 

가시성 변경자 visibility modifier

- 클래스, 변수, 함수를 외부에 노출하는 범위를 결정

- top-level : public, private, internal

- 클래스 멤버 : public, private, internal + protected

 

가시성 변경자 - Packages

- 패키지 내부의 top-level 선언시 가시성 변경자에 따라 참조 가능한 범위가 다름

modifier scope
public 기본값. 어느 위치에서든 참조 가능
private 선언한 file 내부에서만 참조 가능
internal 같은 module 안에서만 참조 가능
protected  사용 불가

 

// 가시성 변경자가 생략된 경우 - public
const val KEY_PRODUCT_ID = "product_id"
fun test(){}
class Store(){}
//파일 위치가 달라지면 외부 참조 불가능 - private
private fun loadProduct(){} //file : Store.kt

fun main(args: Array<String>){ //file : Main.kt
    loadProduct() //Error
}
// 같은 모듈 내에서만 참조 가능 - internal
// moduel: library, package shopping
internal const val KEY_PRODUCT_ID = "product-id"

// module: consoleApp
import shopping.KEYPRODUCT_ID // Error
// top-level에서 선언된 모든 내용 접근 불가능 - private
protected const val KEY_PRODUCT_ID = "product-id"

 

가시성 변경자 - Class members

modifier scope
public 기본 값. 어느 위치에서든 참조 가능
private 선언한 class 내부에서만 참조 가능
internal 같은 module 안에서만 참조 가능
protected private와 동일. + subclass에서도 참조 가능

 

// protected
open class Shape(val vertexCount: Int){
    protected open fun draw(){
        println("Drawing a shape")
    }
}

class Rectangle(vertexCount: Int) : Shape(vertexCount){
    override fun draw(){
         super.draw() // super를 사용해 class Shape의 draw 함수 접근 가능
         println("Drawing a rectangle")
    }
}

fun main(Array<String>){
    val rectangle = Rectangle(4)
    rectangle.draw() // Error - subClass가 아닌 메인 함수에서 draw 호출 불가능
}​

 

728x90

'Android > Kotlin' 카테고리의 다른 글

[Kotlin] object  (0) 2022.09.16
[Kotlin] List, Set, Map, Collection Operations  (0) 2022.09.16
[Kotlin] 클래스 toString/equals/hashCode, data class  (0) 2022.09.10
[Kotlin] 함수, Superclass, Subclass  (0) 2022.09.10
[Kotlin] 클래스 상속, 추상화, 인터페이스  (0) 2022.09.09
    'Android/Kotlin' 카테고리의 다른 글
    • [Kotlin] object
    • [Kotlin] List, Set, Map, Collection Operations
    • [Kotlin] 클래스 toString/equals/hashCode, data class
    • [Kotlin] 함수, Superclass, Subclass
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바