4.2 속성(Property)
4.2 속성(Property)
변수(variables) 옆에, 속성은 클래스에서 데이터를 다루는 두 번째 옵션이에요. 변수와 달리 속성은 어떤 종류의 필드 접근이 허용되어야 하고 어떻게 생성되어야 하는지 더 많이 제어할 수 있어요. 일반적인 사용 사례는 다음과 같아요:
- 어디서든 읽을 수 있지만 정의한 클래스 안에서만 쓸 수 있는 필드를 가진다.
- 읽기 접근 시 getter 메서드를 호출하는 필드를 가진다.
- 쓰기 접근 시 setter 메서드를 호출하는 필드를 가진다.
속성을 다룰 때 두 가지 접근 종류를 이해하는 것이 중요해요:
정의: 읽기 접근(Read Access) — 필드에 대한 읽기 접근은 오른쪽 피연산자 필드 접근 표현식(field access expression)이 사용될 때 발생합니다.
obj.field()형태의 호출을 포함하는데, 여기서field가 읽히기 위해 접근됩니다.
정의: 쓰기 접근(Write Access) — 필드에 대한 쓰기 접근은 필드 접근 표현식이
obj.field = value형태로 값이 할당될 때 발생합니다.obj.field += value같이+=같은 특수 할당 연산자를 위한 읽기 접근과 결합될 수도 있어요.
읽기 접근과 쓰기 접근은 구문에 직접 반영됩니다:
class Main {
public var x(default, null):Int;
static public function main() {}
}
거의 대부분 구문은 변수 구문과 유사하고, 실제로 같은 규칙이 적용돼요. 속성은 다음으로 식별됩니다:
- 필드 이름 뒤의 여는 괄호
( - 뒤이어 오는 특수 접근 식별자(access identifier)(여기서
default) - 쉼표
,로 분리되고 - 또 다른 특수 접근 식별자(여기서
null) - 닫는 괄호
)전에
접근 식별자는 필드가 읽힐 때(첫 번째)와 쓰여질 때(두 번째)의 동작을 정의해요. 각각 특정 값을 가질 수 있습니다(자세한 내용은 속성 절에서). 기본적으로 default는 getter/setter 없이 특정 접근 동작을 정의합니다.
출처: Property
본문
속성의 목적
속성은 변수보다 필드 접근을 더 세밀하게 제어해요. 다른 곳에서 읽기만 가능하거나, getter/setter를 호출하는 등의 동작을 정의할 수 있습니다.
읽기/쓰기 접근
읽기 접근은 필드 접근 표현식(obj.field)으로 발생하고, 쓰기 접근은 할당(obj.field = value)으로 발생해요. += 같은 특수 할당은 읽기+쓰기를 결합합니다.
문법
public var x(default, null):Int; 문법에서 (default, null)은 각각 읽기·쓰기 접근 식별자를 지정해요. default는 getter/setter가 없이 표준 접근을 의미합니다.