코틀린 프로젝트에서 새로운 파일을 생성하면 아래와 같이 다양한 타입들을 선택할 수 있습니다.
File, interface, enum, annotation은 자바를 경험하셨다면 알고 있을 타입입니다. 그 외에도 코틀린에서 여러가지 타입들을 생성할 수 있는데 이 부분에 대해서 자세히 알아보도록 하겠습니다.
파일 타입 알아보기
Class
- 코틀린에서 기본적으로 사용되는 클래스 유형입니다. 상태(속성)와 동작(메서드)을 캡슐화합니다.
- 일반적인 객체 생성과 로직을 구현할 때 사용됩니다.
class MyClass {
private val name: String = "Example"
fun greet() = "Hello, $name"
}
File
- 파일을 생성하며, 코틀린에서는 클래스 없이도 파일 수준에서 함수를 정의할 수 있습니다.
- 자바보다는 자바스크립트의 .js 파일 정의하는 방식과 유사합니다.
- 유틸리티 함수나 상수를 정의할 때 사용됩니다.
fun add(a: Int, b: Int) = a + b
Interface
- 클래스와 달리 구현이 없는 추상 메서드와 속성만 정의하며, 다중 구현이 가능합니다.
- 공통 동작을 강제할 때 사용됩니다.
- 자바의 인터페이스와 동일합니다.
interface MyInterface {
fun display()
}
Sealed Interface
- 계층을 제한할 수 있는 인터페이스입니다. 동일 파일 내에서만 하위 클래스를 정의할 수 있습니다.
- 특정 그룹에 속하는 타입 계층을 정의할 때 사용됩니다.
- Kotlin 1.5 이상부터 지원합니다.
- 구현체의 정의만 동일 파일에 위치시키고, 세부 구현은 같은 파일 혹은 다른 파일에서 작성하여 사용합니다.
sealed interface NetworkState
data class Success(val data: String) : NetworkState
data class Error(val message: String) : NetworkState
object Loading : NetworkState
Data Class
- 데이터 저장을 목적으로 하는 클래스입니다. toString, equals, hashCode 등 메서드를 자동으로 생성합니다.
- 불변으로 클래스를 정의하는 자바 record와 유사하지만 Data class는 속성을 가변으로 만들 수 있습니다.
- val로 선언 시 불변이며, var로 선언 시 가변입니다.
data class MyUser(val name: String, var age: Int)
Enum Class
- 열거형 클래스로, 제한된 상수 집합을 정의할 때 사용됩니다.
- 상태나 옵션을 나타낼 때 사용됩니다.
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
Sealed Class
- 계층 구조를 제한할 수있는 클래스입니다. 하위 클래스는 동일 파일 내에서만 정의할 수 있습니다.
- 특정 그룹에 속하는 클래스를 정의할 때 사용됩니다.
- 자바와 같이 다중 상속이 불가능하며 단일 상속 계층을 표현할 때 사용됩니다.
- 자바의 abstract class와 유사하다고 볼 수 있지만 동일 파일 내에서만 상속 관계를 정의해야 합니다.
sealed class Shape {
class Circle(val radius: Double) : Shape()
class Rectangle(val width: Double, val height: Double) : Shape()
}
Annotation
- 메타데이터를 추가하는 데 사용되는 클래스입니다.
- 함수, 클래스, 속성 등에 추가 정보를 제공할 때 사용됩니다.
annotation class MyAnnotation
Object
- 싱글턴 패턴을 구현하기 위해 사용되는 객체입니다.
- 유틸리티 함수나 상태를 공유할 때 사용됩니다.
object MySingleton {
val name = "Singleton"
}
GPT
'[개발] 언어 > Kotlin' 카테고리의 다른 글
[kotlin] Visibility modifiers (가시성 수정자) (0) | 2025.01.02 |
---|---|
[kotlin] class 에 대해서 알아보기 (2) | 2024.12.29 |
[kotlin] print 문 사용하기 (1) | 2024.12.28 |
코틀린 소개 (0) | 2024.07.29 |