Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20241130 클래스 레이아웃 본문

Kotlin

[TIL]20241130 클래스 레이아웃

최밤빵 2024. 11. 30. 01:01

코틀린은 자바와 유사한 객체지향 언어로, 클래스와 객체를 사용하여 프로그램을 구조화할 수 있다. 그리고 자바보다 더 간결하고 이해하기 쉬운 방식으로 클래스를 정의할 수 있다.

 

클래스 선언

코틀린에서 클래스는 class 키워드를 사용하여 선언한다. 클래스는 속성과 메서드를 가질 수 있고, 객체를 정의하고 동작을 부여할 수 있다. 

class Car {
    var brand: String = ""
    var speed: Int = 0

    fun drive() {
        println("$brand is driving at $speed km/h")
    }
}

Car 클래스는 brandspeed라는 두 개의 속성을 가지고 있으며, drive()라는 메서드를 통해 자동차가 주행 중이라는 메시지를 출력한다.


기본 생성자와 보조 생성자

코틀린 클래스에는 기본 생성자(primary constructor)와 보조 생성자(secondary constructor)를 정의할 수 있다. 기본 생성자는 클래스의 선언에 직접 포함되어 있으며, 객체를 생성할 때 주로 사용된다.

class Car(val brand: String, var speed: Int) {
    fun drive() {
        println("$brand is driving at $speed km/h")
    }
}

Car 클래스는 기본 생성자를 통해 brandspeed를 초기화한다. 이 방식은 클래스 속성을 간결하게 초기화할 수 있어 편리하다. 기본 생성자를 사용하면 객체를 생성할 때 다음과 같이 코드를 작성할 수 있다.

val car = Car("Hyundai", 100)
car.drive()  // Hyundai is driving at 100 km/h

→ 보조 생성자는 클래스 본문에서 constructor 키워드를 사용해 정의할 수 있으며, 기본 생성자 외에 추가적인 초기화 로직이 필요한 경우 사용된다.

class Car {
    var brand: String
    var speed: Int

    constructor(brand: String) {
        this.brand = brand
        this.speed = 0
    }

    constructor(brand: String, speed: Int) {
        this.brand = brand
        this.speed = speed
    }
}

Car 클래스는 두 개의 보조 생성자를 가지고, 이를 통해 다른 초기화 방법을 제공한다.


데이터 클래스

데이터 클래스(data class)를 사용해 데이터를 저장하는 간단한 객체를 쉽게 정의할 수 있다. 데이터 클래스는 주로 데이터 저장 목적으로 사용되며, 자동으로 equals(), hashCode(), toString() 등의 메서드를 생성해준다.

data class User(val name: String, val age: Int)

User 클래스는 nameage를 속성으로 가지는 데이터 클래스로 이 데이터 클래스는 데이터를 저장하고, 두 객체를 비교하거나 쉽게 출력할 수 있는 기능을 제공한다.


상속

코틀린에서 클래스는 기본적으로 final이며, 상속이 불가능하다. 상속을 허용하려면 open 키워드를 사용해야 한다. 

open class Vehicle(val brand: String) {
    open fun drive() {
        println("$brand is moving")
    }
}

class Car(brand: String, val speed: Int) : Vehicle(brand) {
    override fun drive() {
        println("$brand is driving at $speed km/h")
    }
}

Vehicle 클래스가 open으로 선언되었기 때문에 Car 클래스가 이를 상속할 수 있다. drive() 메서드는 open으로 정의되었으므로 Car 클래스에서 override하여 재정의할 수 있다.


코틀린 클래스의 레이아웃을 학습하면서 간결하게 클래스를 정의할 수 있다는 점이 큰 장점이라고 느꼈다. 기본 생성자를 통해 속성을 쉽게 초기화할 수 있고, 데이터 클래스나 open 키워드를 통해 필요한 기능을 효과적으로 사용할 수 있었다. 코틀린의 이러한 기능들은 생산성을 높여주고, 코드를 좀 더 깔끔하게 작성할 수 있도록 도와준다.