- 프로퍼티
- 클래스, 구조체, 열거형 안에 있는 변수 또는 상수를 나타낸다
- 클래스의 속성으로 객체의 상태를 저장하거나 제공합니다. 이러한 상태는 클래스의 인스턴스가 가질 수 있는 데이터를 나타낸다
- 프로퍼티는 저장 프로퍼티와 계산 프로퍼티로 나뉜다
a. 저장 프로퍼티 : 값을 저장하고 인스턴스의 일부로 그 값을 유지한다
b. 계산 프로퍼티 : 특정한 계산을 통해 값을 반환하며, 값을 저장하지 않고 필요할 때마다 새로 계산된다
- 메서드
- 클래스, 구조체, 열거형 안에 있는 함수를 나타낸다
- 클래스의 동작을 정의하고, 클래스의 인스턴스에 대해 수행하는 특정한 작업을 수행한다
- 메서드는 인스턴스 메서드와 타입 메서드로 구분된다
a. 인스턴스 메서드 : 특정 인스턴스에 속하는 동작을 정의하고, 인스턴스의 상태에 접근할 수 있다
b. 타입 메서드 : 클래스 자체와 관련된 동작을 정의하며, 특정 인스턴스에 속하는 것이 아닌 클래스 자체에 영향을 준다
- 클래스는 이니셜라이저(initializer)를 통해 초기값을 설정할 수 있다 프토퍼티에 기본 값이 없는 경우 이니셜라이저를 필수로 구현해야 한다. 그렇지 않을 경우 에러가 발생한다
- 참조 타입
- 변수나 상수에 할당될 때에는 값을 복사하는 것이 아니라 참조(주소)가 복사되어 같은 인스턴스를 가리키게 된다. 클래스가 대표적인 예시이다
- 변수나 상수에 할당될 때 참조가 복사되므로, 동일한 인스턴스를 공유하게 된다. 따라서 한 쪽에서 값을 변경하면 다른 쪽에서도 영향을 받게된다
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1 = Person(name: "Bob")
var person2 = person1
person2.name = "Steve"
print(person1.name)
print(person2.name)
class Name {
var name: String
init(name: String) {
self.name = name
}
func sayMyName() {
print("my name is \(name)")
}
}