kotlin
코틀린 : inner class - Nested Class
ChloeLee
2020. 10. 19. 21:25
=> 다른 클래스 안에 포함된 클래스
=> 외부 클래스 이름. 내부 클래스 이름으로 사용
=> 기본적으로 내부 클래스에서는 외부클래스의 멤버에 접근할 수 없음
=> 내부 클래스를 만들 때 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 는 외부에서 인스턴스 생성을 못함함
}