본문 바로가기
[개발] 언어/Kotlin

[kotlin] class/file 타입 알아보기

by Devsong26 2024. 12. 29.

코틀린 프로젝트에서 새로운 파일을 생성하면 아래와 같이 다양한 타입들을 선택할 수 있습니다.

 

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