티스토리 뷰
코틀린에서는 클래스 내부에 클래스를 둘 수 있는 중첩 클래스
를 지원한다.
중첩 클래스: 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식
사용할 때는 외부 클래스의 이름 . 내부 클래스로 사용할 수 있다.
class Outer {
class Nested { // Outer.Nested() 로 사용 가능
}
}
이때 중첩 클래스가 아니라 내부 클래스로 사용할 수 있는데, 다음과 같이 코드를 작성하면 된다.
class Outer {
inner class Nested {
}
}
이때 Nested
는 혼자서는 객체를 만들 수는 없고 외부 클래스의 객체가 있어야만 생성과 사용이 가능하다.
그러면 왜 내부 클래스를 사용하는가?
중첩 클래스는 서로의 내용을 공유할 수 없으나
내부 클래스는 서로의 내용을 공유할 수 있다. 즉 외부 클래스의 함수나 속성을 사용할 수 있다.
다음의 코드를 봐보자.
fun main(args: Array<String>) {
Outer.Nested().introdue() // 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 introdue() {
println("Nested Class")
}
}
inner class Inner {
var text = "Inner Class"
fun introduceInner() {
println(text)
}
fun introduceOuter() {
println(this@Outer.text) // 위와 같이 외부 클래스를 참조하면 됨
}
}
}
참조를 어떻게 하는지 확인할 수 있다. 중첩과 내부클래스는 함수나 객체의 속성을 접근할 수 있는가?
에 차이가 있으므로 이를 이용하여 코드의 의미를 파악할 수 있다.
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 함수의 argument를 다루는 방법과 infix 함수 (0) | 2021.12.08 |
---|---|
[Kotlin] null 값을 처리하는 방법과 변수의 동일성 체크 방법 (0) | 2021.12.08 |
[Kotlin] List (0) | 2021.12.08 |
[Kotlin] Generic (0) | 2021.12.07 |
[Kotlin] 클래스의 다형성 (0) | 2021.12.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Programmers #알고리즘 #Python #KAKAOINTERNSHIP #비전공개발자 #불량사용자
- kotlin문법
- 카카오
- 일반파라미터
- 안드로이드 #안드로이드스튜디오 #Kotlin #앱개발 #안드로이드기초 #비전공개발자 #풀스택개발자 #앱개발자
- 프로그래머스
- 프로젝트구조
- 보조생성자
- 추가합격후기
- 생성자
- 백준
- 코틀린
- DP
- 백준알고리즘 #BFS #델타이동 #알고리즘풀이 #개발 #안전영역 #풀스택개발자가되고싶습니다. #노력할래요 # 꾸준히 # 화이팅! #비전공개발자
- Python
- 기본생성자
- 싸피5기
- Java #객체지향 #상속 #생성자 #개념 #비전공개발자 #FullStack을 #향해
- 앱개발
- Java
- Kotlin
- 알고리즘
- 백준 #숨박꼭질3 #다익스트라 #알고리즘 #비전공개발자 #풀스택 #웹개발 #앱개발 #안드로이드 #python
- 중첩클래스와 내부클래스
- 참조연산자
- 비전공개발자
- 비전공싸피합격
- 구간 합 구하기 4
- 안드로이드
- Class
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함