1. 클래스와 구조체
클래스와 구조체는 속성(클래스의 변수)과 메서드(클래스의 함수)를 담을 수 있는 데이터 묶음이다.
class Dog { //클래스 명은 대문자로 작성한다. / class가아닌 struct(구조체)도 가능하다.
var name = "강아지"
var weight = 0
func sit() {
print("\(name)가 앉았습니다.")
}
func layDwon() {
print("누웠습니다.")
}
}
var bori = Dog()
bori.name //강아지
bori.name = "보리"
bori.name //보리
bori.sit //보리가 앉았습니다.
2. 클래스와 구조체의 차이 (가장 큰 차이는 어디에 저장되느냐 !)
1) 클래스
참조형식
데이터를 힙에 저장하여 데이터에 있는 클래스자료의 주소를 참고
편의생성자 존재
상속이 가능
메모리관리를 해줘야함(ARC)
2) 구조체
값형식
멤버와이즈이니셜라이저 자동제거 ( 각각의 속성을 자동적으로 초기화시켜주는 기능)
메서드 내에 속성 변경은 불가능
상속 불가능
데이터를 스택에 저장하여 지목하는 데이터와 직접적인 연관성을 띈다.
메모리 관리가 따로 필요없음
>> 이러한 차이점을 고려하여 클래스/구조체를 사용해야 한다.
3. 초기화의 의미
class Dog {
var name: String
var weight: Double
...
init(name: String, weight: Double) { //초기화 메서드. init으로 명명됨
self.name = name
self.weight = weight
}
...
}
초기화란(init)?
인스턴스를 생성하는 과정. 저장속성에 대한 초기값을 설정하여 사요가능한 상태가 되게 하는것
모든 저장속성 초기화를 해야 인스턴스 생성이 가능하다.
즉, 생성자 실행의 종료시점에는 모든 저장속성에 값이 저장되어 있어야 한다.
초기화는 오버로딩(같은이름 허용)을 지원한다.
(추가)
객체지향의 4대 특징 >> 캡상추다
캡슐화
상속성
추상화
다형성
이 포스팅은 인프런 앨런의 스위프트 문법을 참고하여 작성하였습니다.
'swift문법' 카테고리의 다른 글
| 참고) 접근제어 (1) | 2022.08.23 |
|---|---|
| [Swift] Part11-1_클래스와구조체(속성과 메서드) (0) | 2022.08.21 |
| [Swift] Part10_열거형 (0) | 2022.08.11 |
| [Swift] Part9_컬렉션 (0) | 2022.08.11 |
| [Swift] Part8_옵셔널 (0) | 2022.08.11 |