Language/Swift

[2_객체지향 프로그래밍과 스위프트] Chapter9. struct/class

개랭갱깽스타 2021. 3. 11. 11:45

새로운 데이터 타입을 저으이하고, 기능을 추가한다.

구조체: struct - 값 타입

스위프트의 기본 데이터 타입은 모두 구조체(String, Bool, Int, ...)

 

클래스: class - 참조 타입

class Person {
    var heihgt: Float = 0.0
    var weight: Float = 0.0
    init() {
        self.heihgt = 100.0
        self.weight = 20.0
    }
    
    init(_ h: Float, _ w: Float) {
        self.heihgt = h
        self.weight = w
    }
    
    deinit {
        print("Person의 인스턴스가 소멸됩니다.")
    }
}

 

구조체 VS 클래스

둘다: 값 저장 위한 프로퍼티 정의 가능 / 기능 실행을 위해 메소드 정의 가능 / 서브스크립트문법을 통해 구조체 or 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있음 / 초기화될 때의 상태를 지정하기 위해 이니셜라이저 정의 / 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션 확장 가능 / 특정 기능을 실행하기 위해 특정 프로토콜 준수 가능

only 클래스: 구조체는 상속 X / 타입캐스팅은 클래스의 인스턴스에만 허용 / deinitalizer 는 클래스의 인스턴스에만 활용 / 참조 횐수 계산(reference counting) 은 클래스의 인스턴스에만 적용

반응형

'Language > Swift' 카테고리의 다른 글

[Optional]  (0) 2021.05.12
[Optional]  (0) 2021.05.10
[2_객체지향 프로그래밍과 스위프트] Chapter10. property, method  (0) 2021.03.11
[1_스위프트 기초] Chpater8. Optional  (0) 2021.03.11
[1_스위프트 기초] Chaptrer 1. Swift  (0) 2021.03.11