Kotlin의 프로퍼티
Kotlin에서 프로퍼티는 클래스의 핵심 요소 중 하나입니다.
이 가이드에서는 Kotlin 프로퍼티의 다양한 측면을 상세히 살펴보겠습니다.
프로퍼티 선언 (Declaring Properties)
Kotlin에서 프로퍼티는 가변(mutable)과 읽기 전용(read-only) 두 가지로 선언할 수 있습니다:
class Address {
var name: String = "Holmes, Sherlock" // 가변
var street: String = "Baker"
var city: String = "London"
var state: String? = null
val zip: String = "123456" // 읽기 전용
}
프로퍼티를 사용하려면 단순히 이름으로 참조하면 됩니다:
fun copyAddress(address: Address): Address {
val result = Address() // Kotlin에는 'new' 키워드가 없습니다
result.name = address.name // 접근자가 호출됩니다
result.street = address.street
// ...
return result
}
게터와 세터 (Getters and Setters)
프로퍼티 선언의 전체 구문은 다음과 같습니다:
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
초기화자, 게터, 세터는 선택사항입니다. 프로퍼티 타입은 초기화자나 게터의 반환 타입에서 유추할 수 있는 경우 생략할 수 있습니다:
var initialized = 1 // Int 타입, 기본 게터와 세터
val simple: Int? // Int 타입, 기본 게터, 생성자에서 초기화해야 함
val inferredType = 1 // Int 타입과 기본 게터
커스텀 접근자를 정의할 수 있습니다:
class Rectangle(val width: Int, val height: Int) {
val area: Int
get() = this.width * this.height
}
세터도 커스텀으로 정의할 수 있습니다:
var stringRepresentation: String
get() = this.toString()
set(value) {
setDataFromString(value) // 문자열을 파싱하여 다른 프로퍼티에 값 할당
}
백킹 필드 (Backing Fields)
Kotlin에서 필드는 프로퍼티의 값을 메모리에 저장하기 위해서만 사용됩니다. 필드를 직접 선언할 수는 없지만, 프로퍼티가 백킹 필드를 필요로 할 때 Kotlin이 자동으로 제공합니다:
var counter = 0 // 초기화자가 백킹 필드에 직접 할당
set(value) {
if (value >= 0)
field = value
}
백킹 프로퍼티 (Backing Properties)
암시적 백킹 필드 스킴에 맞지 않는 작업을 하고 싶다면, 백킹 프로퍼티를 사용할 수 있습니다:
private var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null) {
_table = HashMap() // 타입 매개변수가 추론됨
}
return _table ?: throw AssertionError("Set to null by another thread")
}
컴파일 타임 상수 (Compile-Time Constants)
컴파일 시점에 값을 알 수 있는 읽기 전용 프로퍼티는 const
수식어로 표시할 수 있습니다:
const val SUBSYSTEM_DEPRECATED: String = "This subsystem is deprecated"
@Deprecated(SUBSYSTEM_DEPRECATED) fun foo() { ... }
지연 초기화 프로퍼티와 변수 (Late-Initialized Properties and Variables)
널이 될 수 없는 타입의 프로퍼티를 생성자에서 초기화하기 어려운 경우, lateinit
수식어를 사용할 수 있습니다:
public class MyTest {
lateinit var subject: TestSubject
@SetUp fun setup() {
subject = TestSubject()
}
@Test fun test() {
subject.method() // 직접 참조 가능
}
}
프로퍼티 오버라이딩 (Overriding Properties)
프로퍼티 오버라이딩에 대한 자세한 내용은 "Overriding properties" 섹션을 참조하세요.
위임된 프로퍼티 (Delegated Properties)
프로퍼티 위임을 사용하면 공통적인 프로퍼티 패턴(예: 지연 값, 맵에서 키로 읽기 등)을 라이브러리로 구현할 수 있습니다.
Kotlin의 프로퍼티 시스템은 강력하고 유연합니다. 기본 게터와 세터를 제공하면서도 필요에 따라 커스텀 접근자를 정의할 수 있어, 다양한 사용 사례에 대응할 수 있습니다. 백킹 필드와 백킹 프로퍼티를 통해 세밀한 제어가 가능하며, 지연 초기화와 위임된 프로퍼티 같은 고급 기능을 통해 복잡한 시나리오도 처리할 수 있습니다.
이러한 기능들을 적절히 활용하면 더 안전하고 표현력 있는 코드를 작성할 수 있으며, 특히 Java에서 흔히 볼 수 있는 boilerplate 코드를 크게 줄일 수 있습니다.
이 블로그의 다른글 :
2024.08.10 - [개발&프로그래밍] - [Kotlin] 조건문과 반복문
[Kotlin] 조건문과 반복문
Kotlin의 조건문과 반복문Kotlin은 다양한 조건문과 반복문을 제공하여 프로그래머가 효율적이고 읽기 쉬운 코드를 작성할 수 있게 합니다. 이 가이드에서는 Kotlin의 주요 제어 흐름 구조를 살펴보
observerlife.tistory.com
2024.08.10 - [개발&프로그래밍] - [kotlin] 타입 체크와 캐스팅
[kotlin] 타입 체크와 캐스팅
Kotlin의 타입 체크와 캐스팅Kotlin에서 타입 체크와 캐스팅은 객체 지향 프로그래밍의 핵심 기능입니다. 이 가이드에서는 Kotlin의 타입 체크와 캐스팅 기능을 모든 코드 예제와 함께 상세히 살펴보
observerlife.tistory.com
2024.08.10 - [개발&프로그래밍] - [Kotlin] 숫자 타입과 연산 가이드
[Kotlin] 숫자 타입과 연산 가이드
Kotlin의 숫자 타입과 연산 가이드Kotlin에서 숫자를 다루는 방법과 관련된 다양한 개념을 살펴봅니다. 정수 타입 (Integer types)Kotlin은 숫자를 표현하기 위한 내장 타입 세트를 제공합니다. 정수의
observerlife.tistory.com
2024.08.10 - [개발&프로그래밍] - [kotlin] 코딩 컨벤션 - lambdas, Trailing commas
[kotlin] 코딩 컨벤션 - lambdas, Trailing commas
Kotlin 코딩 컨벤션 가이드Kotlin을 사용하여 더 깔끔하고 일관된 코드를 작성하기 위한 고급 코딩 컨벤션을 소개합니다.아래글은 공식 홈페이지를 참고하였습니다.https://kotlinlang.org/docs/coding-convent
observerlife.tistory.com
2024.08.09 - [개발&프로그래밍] - [kotlin] 코딩 컨벤션 (coding conventions)
[kotlin] 코딩 컨벤션 (coding conventions)
Kotlin 코딩 컨벤션 가이드 Kotlin 프로그래밍 언어를 사용할 때 따라야 할 코딩 컨벤션에 대한 종합적인 가이드입니다.이 가이드라인을 따르면 코드의 일관성과 가독성을 높일 수 있습니다. 이
observerlife.tistory.com
2024.08.09 - [개발&프로그래밍] - [kotlin] 자주 사용되는 관용구(idiom) 모음
[kotlin] 자주 사용되는 관용구(idiom) 모음
이 글은 Kotlin 프로그래밍 언어에서 자주 사용되는 관용구(idiom)들의 모음입니다.각 관용구에 대한 설명과 예제 코드를 함께 설명합니다.공식 홈페이지 kotlinlang.org의 내용을 참고합
observerlife.tistory.com
2024.08.07 - [개발&프로그래밍] - [kotlin] 입문시 알아야 할 8가지 핵심 문법
[kotlin] 입문시 알아야 할 8가지 핵심 문법
Kotlin의 주요 문법 특징들을 간략히 정리한 것입니다.각 항목은 Kotlin의 간결하고 표현력 있는 코드 작성을 지원하는 특징들을 보여줍니다. 아래 문서는 kotlinlang.org 공식 홈페이지를 참조합니다.
observerlife.tistory.com
2024.08.07 - [개발&프로그래밍] - [kotlin] 입문시 알아야 할 7가지 핵심 문법
[kotlin] 입문시 알아야 할 7가지 핵심 문법
Kotlin의 기본적인 문법 요소들을 간략하게 설명하고 있습니다.각 항목은 Kotlin 프로그래밍의 기초를 이해하는 데 중요한 개념들을 포함하고 있습니다. 아래 문서는 kotlinlang.org 공식 홈페이지를
observerlife.tistory.com
Kotlin, 프로퍼티, 게터, 세터, 백킹필드, 지연초기화, 컴파일타임상수, 프로퍼티오버라이딩, 위임된프로퍼티, 안드로이드개발, 서버개발, 코틀린문법, 객체지향프로그래밍, 캡슐화, NullSafety
'개발&프로그래밍' 카테고리의 다른 글
[kotlin] 가시성 수정자(Visibility modifiers) (0) | 2024.08.13 |
---|---|
[kotlin] 인터페이스(interface) (0) | 2024.08.13 |
[kotlin] 상속(inheritance) (0) | 2024.08.13 |
[kotlin] 클래스 (0) | 2024.08.12 |
[kotlin] Exceptions (0) | 2024.08.12 |
댓글