밤빵's 개발일지
[TIL]20241130 클래스 레이아웃 본문
코틀린은 자바와 유사한 객체지향 언어로, 클래스와 객체를 사용하여 프로그램을 구조화할 수 있다. 그리고 자바보다 더 간결하고 이해하기 쉬운 방식으로 클래스를 정의할 수 있다.
클래스 선언
코틀린에서 클래스는 class 키워드를 사용하여 선언한다. 클래스는 속성과 메서드를 가질 수 있고, 객체를 정의하고 동작을 부여할 수 있다.
class Car {
var brand: String = ""
var speed: Int = 0
fun drive() {
println("$brand is driving at $speed km/h")
}
}
→ Car 클래스는 brand와 speed라는 두 개의 속성을 가지고 있으며, drive()라는 메서드를 통해 자동차가 주행 중이라는 메시지를 출력한다.
기본 생성자와 보조 생성자
코틀린 클래스에는 기본 생성자(primary constructor)와 보조 생성자(secondary constructor)를 정의할 수 있다. 기본 생성자는 클래스의 선언에 직접 포함되어 있으며, 객체를 생성할 때 주로 사용된다.
class Car(val brand: String, var speed: Int) {
fun drive() {
println("$brand is driving at $speed km/h")
}
}
→ Car 클래스는 기본 생성자를 통해 brand와 speed를 초기화한다. 이 방식은 클래스 속성을 간결하게 초기화할 수 있어 편리하다. 기본 생성자를 사용하면 객체를 생성할 때 다음과 같이 코드를 작성할 수 있다.
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 클래스는 name과 age를 속성으로 가지는 데이터 클래스로 이 데이터 클래스는 데이터를 저장하고, 두 객체를 비교하거나 쉽게 출력할 수 있는 기능을 제공한다.
상속
코틀린에서 클래스는 기본적으로 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 키워드를 통해 필요한 기능을 효과적으로 사용할 수 있었다. 코틀린의 이러한 기능들은 생산성을 높여주고, 코드를 좀 더 깔끔하게 작성할 수 있도록 도와준다.
'Kotlin' 카테고리의 다른 글
[TIL]20241203 Lotto 기능 구현하기 (1) | 2024.12.03 |
---|---|
[TIL]20241129 Inline 함수와 Reified 키워드 (0) | 2024.11.29 |
[TIL]20241128 자바 스트림과 코틀린 시퀀스의 차이 (1) | 2024.11.28 |
[TIL]20241127 자동차 경주 게임 구현 (5) | 2024.11.27 |
[TIL]20241118 확장성과 오버엔지니어링 (3) | 2024.11.18 |