티스토리 뷰
728x90
중첩 클래스
- 클래스 안에 또 다른 클래스를 중첩해서 사용할 수 있다.
- 중첩된 클래스는 외부 클래스의 멤버를 접근할 수 없다.
자바의 정적 중첩 클래스와 느낌이 비슷하다...?
class Outer {
private val outerMember = 10
fun outerFunc() = println("outer function call!!")
class Nested {
// 외부 클래스 접근 불가
// pinrtln(outerMember)
// outerFunc()
fun nestedFunc() = print("nested function call!!")
}
}
fun main() {
// 자바의 중첩 스태틱 클래스와 같다
Outer.Nested().nestedFunc() // nested function call!!
}
내부 클래스
- inner키워드를 붙이면 내부 클래스로 외부 클래스의 멤버를 접근 할 수있다.
- 중복된 멤버가 있다면 this한정자로 접근한다.
자바의 내부 클래스와 비슷한 느낌....?
class Outer {
val outerMember = 10
fun outerFunc() = println("outer function call!!")
val overlapMember = "outer member"
inner class Inner {
val overlapMember = "inner member"
fun getOuterMember() = println(outerMember)
fun callOuterfunc() = outerFunc()
fun callOverlapMember() {
println("outer overlap member :: ${this@Outer.overlapMember}")
println("inner overlap member :: ${this@Inner.overlapMember}")
println("inner overlap member :: ${this.overlapMember}")
}
}
}
fun main() {
// 외부 클래스부터 인스턴스화 해야한다.
val innerClass = Outer().Inner()
innerClass.getOuterMember() // 10
innerClass.callOuterfunc() // outer function call!!
// outer overlap member :: outer member
// inner overlap member :: inner member
// inner overlap member :: inner member
innerClass.callOverlapMember()
}
출처
https://javacan.tistory.com/entry/kotlin-11-12-ko-reference
728x90
'개발 언어 > 코틀린' 카테고리의 다른 글
코틀린(Kotlin) | 클래스 - 프로퍼티(Property) (2) | 2019.06.24 |
---|---|
코틀린(Kotlin) | SAM Conversion (0) | 2019.06.24 |
코틀린(Kotlin) | 제네릭 (Generic) (0) | 2019.06.23 |
코틀린(Kotlin) | 클래스 - 데이터 클래스 (0) | 2019.06.22 |
코틀린(Kotlin) | object (like static) (0) | 2019.06.22 |
댓글