Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- class
- Kotlin Generic
- 코틀린 data class
- 코틀린 람다함수
- 객체의 동일성
- 코틀린 중첩클래스
- 내용의동일성
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 컬렉션 함수
- 코틀린
- kotlin recyclerview
- 코틀린 제너릭
- kakao blind
- isNullOrBlank
- collection function
- kotlin addview
- 코틀린 내부 클래스
- kotlin collection
- 코틀린 컬렉션함수
- 해시
- lateinit
- 카카오 순위검색
- kotlin listview
- add view
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- 컬렉션함수
- Kotlin
- 프로그래머스
- 코틀린 문자열
- 코틀린 lateinit
Archives
- Today
- Total
엔지니어 규의 IT 프로그래밍 다이어리
[Kotlin] 23. 중첩 클래스와 내부클래스 본문
728x90
코틀린에서는 기본적으로 클래스안에 클래스를 하나 더넣을수 있는 중첩클래스(Nested Class)를 지원한다.
중첩 클래스는 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기위해 만들어진 형식으로,
사용할때는 외부클래스의 이름.중첩클래스의 이름 으로 사용하게 된다.
이때 중첩 클래스 대신 내부 클래스(inner class) 라는것을 사용할 수도 있다.
중첩클래스에 inner 라는 키워드를 붙인 내부 class 는 혼자서는 객체를 만들 수는 없고,
외부 클래스의 객체가 있어야만 생성과 사용이 가능한 클래스이다.
중첩 클래스는 형태만 내부에 존재할 뿐 실질적으로는 내용을 서로 공유할 수 없는 별개의 클래스 이지만,
내부 클래스는 외부 클래스 객체 안에서 사용되는 클래스 이므로 외부클래스 객체이 속성이나 함수를 사용 할 수 있다.
fun main(){
Outer.Nested().introduce() //Nested class
val outer = Outer()
val inner = outer.Inner()
inner.introduceInner() //Inner class
inner.introduceOuter() //Outer Class
outer.text = "Changed Outer Class"
inner.introduceOuter() //Changed Outer Class
}
class Outer{
var text = "Outer Class"
class Nested{
fun introduce(){
println("Nested class")
}
}
inner class Inner{
var text = "Inner class"
fun introduceInner(){
println(text)
}
fun introduceOuter(){
println(this@Outer.text)
}
}
}
위 코드에서 처럼 Outer 클래스와 Inner 클래스에 같은이름의 속성이나 함수가 있다면 this@Outer.text 처럼 참조하면 된다.
코드를 실행해 보면 각각의 클래스의 특징에 따른 동작을 확인할 수 있다.
중첩 클래스와 내부클래스는 클래스간의 연게성을 표현하여, 코드의 가독성 및 작성편의성이 올라갈 수 있으므로 적절히 사용하면 좋다.
728x90
'프로그래밍 언어 > 코틀린' 카테고리의 다른 글
[Kotlin] 25. Set 과 Map (0) | 2022.06.01 |
---|---|
[Kotlin]24. Data class 와 Enum Class (0) | 2022.06.01 |
[Kotlin] 22. 함수의 argument를 다루는 방법과 infix 함수 (0) | 2022.05.31 |
[Kotlin] 21. Null 값을 처리하는 방법, 변수가 동일한지 확인하는 방법(난이도 : ★★★) (0) | 2022.05.29 |
[Kotlin] 20. 문자열 다루는 방법 (0) | 2022.05.29 |
Comments