본문 바로가기
kotlin

Kotlin 자세히 알아보기 - class 안에 class 정의하기, Anonymous

by Gil 2019. 8. 15.
728x90

1. Nested class

내부에 그냥 class 를 정의하면 static으로 처리한다.

java에서는 기본값이 inner class 이지만, kotlin은 기본값이 nested 즉 static class 이다.

class Outer {
    
    class Nested {
    	private val bar: Int = 1
    	fun foo() = bar
    }
}

/* 호출 */
val demo = Outer.Nested().foo() // == 2

 

2. Inner class

class Outer {
    private val bar: Int = 1
    inner class Inner {
    	fun foo() = bar
    }
}

/* 호출 */
val demo = Outer().Inner().foo() // == 1

 

3. Anonymous inner class

recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {

    //오버라이드 함수 내용 생략
    override fun onScrolled() {
    }
    
    override fun onScrollStateChanged() {
    }
})