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가 없이 표준 접근을 의미합니다.

더 알아보기