Kotlin/포스팅

코틀린 클래스 내부 구조

짜집퍼박사(짜박) 2023. 12. 25. 17:45

코틀린 클래스 내부 구조는 프로퍼티, 메서드, 초기화 블록 등으로 구성됩니다. 아래에서는 코틀린 클래스의 주요 내부 구조에 대해 설명합니다.

 

1. 프로퍼티 (Properties)

코틀린 클래스 내에서 프로퍼티는 클래스의 상태를 나타냅니다. 프로퍼티는 주로 클래스의 필드로 이해할 수 있습니다. 코틀린에서는 val (읽기 전용), var (쓰기 가능) 키워드를 사용하여 프로퍼티를 정의합니다.

class Person {
    val name: String = "John"
    var age: Int = 30
}

 

2. 메서드 (Methods)

메서드는 클래스가 수행할 동작을 정의합니다. 코틀린에서 메서드는 fun 키워드를 사용하여 정의합니다.

class Calculator {
    fun add(a: Int, b: Int): Int {
        return a + b
    }
}

 

3. 초기화 블록 (Initializer Block)

초기화 블록은 클래스 인스턴스가 생성될 때 실행되는 코드 블록입니다. init 키워드를 사용하여 정의하며, 클래스 내부에서 여러 개의 초기화 블록을 사용할 수 있습니다.

class MyClass {
    init {
        // 클래스 인스턴스 생성 시 실행되는 초기화 블록
    }
}

 

4. 주 생성자와 보조 생성자 (Primary Constructor and Secondary Constructors)

주 생성자 (Primary Constructor): 클래스 헤더 부분에 위치하며, 클래스의 주요 속성을 정의합니다. 주 생성자는 여러 형태로 작성할 수 있습니다.

class Person(val name: String, var age: Int)

보조 생성자 (Secondary Constructor): constructor 키워드를 사용하여 정의하며, 클래스의 인스턴스를 생성할 때 추가적인 초기화를 수행하는 데 사용됩니다.

class Person {
    var name: String = ""
    var age: Int = 0

    constructor(name: String, age: Int) {
        this.name = name
        this.age = age
    }
}

 

5. 내부 클래스 (Inner Classes)

클래스 내부에 또 다른 클래스를 정의할 수 있습니다. 이를 내부 클래스라고 합니다. 내부 클래스는 외부 클래스의 인스턴스에 종속되며, 외부 클래스의 속성에 직접 접근할 수 있습니다.

class Outer {
    private val outerProperty: Int = 10

    inner class Inner {
        fun accessOuterProperty() {
            println(outerProperty)
        }
    }
}

 

6. 컴패니언 객체 (Companion Objects)

코틀린에서는 클래스 내부에 컴패니언 객체를 정의할 수 있습니다. 컴패니언 객체는 클래스의 인스턴스 없이 호출될 수 있는 메서드나 프로퍼티를 정의하는 데 사용됩니다.

class MyClass {
    companion object {
        fun create(): MyClass {
            return MyClass()
        }
    }
}

 

7. 초기화 순서

클래스 인스턴스의 초기화 순서는 다음과 같습니다.

 

1) 주 생성자의 파라미터와 프로퍼티 초기화.
2) 초기화 블록 실행.
3) 보조 생성자가 있다면 호출됨.

 

초기화 블록과 보조 생성자는 각각 여러 개가 있을 수 있으며, 호출 순서는 선언된 순서대로입니다.

class Example(val name: String) {
    init {
        println("Init block: $name")
    }

    constructor(name: String, age: Int) : this(name) {
        println("Secondary constructor: $age")
    }

    init {
        println("Another init block")
    }
}

이런 구조를 통해 코틀린 클래스는 다양한 속성과 동작을 정의하고 초기화할 수 있습니다. 클래스의 내부 구조를 이해하면 코틀린에서 객체지향 프로그래밍을 더욱 효과적으로 활용할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 멤버 가시성  (0) 2023.12.29
코틀린 생성자  (0) 2023.12.25
코틀린 클래스 정의  (0) 2023.12.25
코틀린 try 문으로 예외 처리  (0) 2023.12.25
코틀린 예외 던지기  (0) 2023.12.25