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
- 시그니처
- 믹스커피
- 원달러환율
- 원스휴먼 스타크롬
- 커피추천
- 원스휴먼 요리
- 국방부
- 2차계엄
- 원스휴먼 황금양털파밍
- 일론머스크
- 원스휴먼 레시피 파밍
- 2차 비상계엄
- 1203계엄령
- 유광버섯 통조림
- 원스휴먼 동물
- 믹스커피추천
- 홈플러스 시그니처 모카골드믹스커피
- 원스휴먼 황금양 구하기
- 비상계엄령
- 원스휴먼 사료
- 계엄령 외신반응
- 윤석열
- 계엄령
- 레시피 파밍
- 원스휴먼 황금양
- 원스휴먼 먹이
- 홈플러스
- 원스휴먼 쿠폰
- 원스휴먼 레시피
Archives
- Today
- Total
0101011001010111
Android - inner Class 본문
728x90
반응형
inner class는 Kotlin에서 특별한 유형의 중첩된 클래스 입니다.
주요 특징 : inner클래스는 바깥쪽 클래스의 인스턴스에 접근 할 수 있다.
일반적인 클래스에서 중첩이 될 경우에는,
클래스 A안에 있는 클래스 B에서는,
클래스 A의 내용 '감자'의 내용에 직접 접근 할 수 없다.
불러오려면 , 다른 방법을 써야한다.
- 생성자를 통한 전달: Class2의 생성자를 통해 Class1의 참조나 필요한 데이터를 전달받을 수 있습니다.
- Companion object: Class1 내에 companion object를 정의하면 그 안에 있는 내용은 정적인 내용처럼 동작하므로 Class2에서 직접 접근이 가능합니다.
예시 ▼
class Class1 {
private val class1Value = "Hello from Class1"
// Class2의 생성자로 Class1의 참조를 전달
class Class2(class1: Class1) {
fun display() {
println(class1.class1Value)
}
}
companion object {
const val class1StaticValue = "Static value in Class1"
}
}
fun main() {
val class1Instance = Class1()
val class2Instance = Class1.Class2(class1Instance)
class2Instance.display() // 출력: Hello from Class1
println(Class1.class1StaticValue) // 출력: Static value in Class1
}
하지만, inner class를 사용하면
클래스 A의 감자 라는 내용을 inner class B에서 직접 접근 가능하다.
(바깥쪽 클래스의 private 멤버까지도 접근할 수 있음.)
예시 ▼
class Outer {
val name = "OuterClass"
inner class Inner {
val name = "InnerClass"
fun printName() {
println(this.name) // prints "InnerClass"
println(this@Outer.name) // prints "OuterClass"
}
}
}
같은 변수의 이름 name을 쓸 경우,
print를 할경우,
this.name = > inner 클래스 내부에서 생성된 name을 참조 하므로 Inner Class라고 프린트되고,
this@Outer.name 을 할 경우,
바로 바깥쪽 클래스인 Outer 클래스를 참조하여 변수 name 을 출력 하면 OuterClass라고 뜨게 된다.
inner 클래스는 이렇게 바로 바깥쪽 클래스를 쉽게 직접 접근 하기 위해 사용된다.
inner 클래스의 범위
inner 클래스는 자신이 속한 상위 클래스의 참조가 가능하다.
다른 클래스로 접근은 어렵다.
예를 들면, 자신의 상위 클래스인 Class A의 내용 감자는 직접 접근할 수 있지만,
자신과 관련이 없는 Class C 의 내용 양파에는 직접 접근할 수 없다.
728x90
반응형
'Kotlin > [스스로]Kotlin&안드로이드' 카테고리의 다른 글
Android 입문 (복습) intent (0) | 2023.09.04 |
---|---|
Android - [여기서 @는 뭘 뜻하는 걸까 ?] 예 : Intent(this@FirstActivity, SecondActivity::class.java) (0) | 2023.09.04 |
입문 - 복습 / 액티비티 (0) | 2023.09.04 |
viewBinding 사용법 정리 (0) | 2023.08.31 |
Kotlin - 원형 이미지뷰 만들 수 있게, 그래들에 추가하기 (0) | 2023.08.31 |