=> 다른 클래스 안에 포함된 클래스
=> 외부 클래스 이름. 내부 클래스 이름으로 사용
=> 기본적으로 내부 클래스에서는 외부클래스의 멤버에 접근할 수 없음
=> 내부 클래스를 만들 때 inner를 추가하면 외부 클래스의 멤버에 접근 가능
inner 가 추가 되면 내부 클래스의 인스턴스는 클래스 안에서만 생성
=> inner 가 붙지 않은 내부클래스는 static 의 개념이라 외부클래스이름.내부클래스 이름으로 인스턴스를 생성 할 수 있지만 inner가 붙으면 static의 개념이 소멸 되기 때문에 내부클래스의 인스턴스 메소드 안에서만 인스턴스 생성을 해야합니다.
=> 안드로이드는 클래스 안에 클래스를 만드는 구조를 많이 사용
이벤트 처리할 때 많이 사용
// 외부 클래스
class Button{
val n : Int = 20
// 내부 클래스
class OnClickListener{
//n = 30 // 일반 내부 클래스에서는 외부클래시의 멤버를 사용 안됨
}
inner class OnTouchListener{
fun myFun{
n = 30 // inner 클래스 이면 메소드를 생성 해서 외부 클래스의 멤버를 사용 할 수 있음음
}
}
}
fun main(args :Array<String>) {
// Button 클래스의 내부클래스인 OnClickListener 의 인스턴스 생성
var onClick: Button.OnClickListener =
Button.OnClickListener()
var ontouch: Button.OnTouchListener =
Button.OnTouchListener() //inner class 는 외부에서 인스턴스 생성을 못함함
}
'kotlin' 카테고리의 다른 글
코틀린 : 함수형 프로그래밍 (0) | 2020.10.20 |
---|---|
코틀린 : anonymous class, Companion, Singleton (0) | 2020.10.19 |
코틀린 : 생성과 사용 멤버 등의 개념 (0) | 2020.10.19 |
코틀린 : enum 열거형 상수 (0) | 2020.10.19 |
코틀린에서 다양한 클래스 생성 방법 (0) | 2020.10.19 |