[12강] https://youtu.be/q7GV68jKLVM
[13강] https://youtu.be/ewrozSyi8kE
1. 참조하기
물리적 분류 :
project > module > file
논리적 분류 :
package
문법 :
패키지 정의할 때 : (파일 첫줄에)
package 패키지명
불러올 때 :
import 패키지명
2. scope
변수, 함수의 생애
규칙1. 변수, 함수가 존재한다면 참조할 수 있다.
규칙2. 선언과 함께 탄생, 중괄호 닫힘("}")과 함께 소멸한다.
(그러므로 패키지 스코프는 소멸 할 수 없다.)
var a = 10 // 패키지 스코프
fun main() {
val x = X()
// 패키지 스코프 a 출력
println(a)
x.p()
// 패키지 스코프 a 출력
println(a)
}
class X() {
fun p() {
// 패키지 스코프 a '증가' 및 출력
println(++a)
}
}
10
11
11
변수 생성 소멸 예시 2:
val a = 10 // 패키지 스코프
fun main() {
println(a) // 패키지
val a = 11
println(a) // main 로컬
if(true){
println(a) // main 로컬
val a = 12
println(a) // if 로컬
}
}
10
11
11
12
3. 접근제어자
public(+) : 완전 공개 (기본값)
internal(~) : 패키지에 한하여 공개
protected(#) : 상속에 한하여 공개
private(-) : 완전 비공개
fun main() {
val x = X()
val y = Y()
x.A() // --> A
//x.B() // --> Cannot access 'B': it is protected in 'X'
//x.C() // --> Cannot access 'C': it is private in 'X'
x.D() // --> C
y.I() // --> B
}
open class X() {
public fun A() { println("A") }
protected fun B() { println("B") }
private fun C() { println("C") }
fun D() { C() } // 내부 함수는 private을 호출 할 수 있다.
}
class Y() : X() {
fun I() { B() }
}
A
C
B'코틀린' 카테고리의 다른 글
| [Youtube DiMo] 16강. Object (0) | 2022.04.29 |
|---|---|
| [Youtube DiMo] 14-15강. 고차함수(함수포인터)와 람다함수/스코프함수 (0) | 2022.04.29 |
| [Youtube DiMo] 10-11강. 상속(오버라이딩, 추상화) (0) | 2022.04.29 |
| [Youtube DiMo] 8-9강. 클래스 (0) | 2022.04.29 |
| [Youtube DiMo] 7강. 흐름제어와 논리연산자 (0) | 2022.04.29 |
댓글