SWIFT)構造とクラス


***修正を続行
1.構造体
2.クラス
  • 多重継承なし
  • 2-1クラスの定義
    // 클래스 정의
    class ClassName {
    
    }
  • の前にクラスを書き、後ろにクラスの名前を書きます.
  • 類名は大文字のキャメルボックスで記入します.
  • 2%から2%の割合&方法
    class ClassName {
        
        // 가변 프로퍼티
        var mutableProperty: Int = 100 
    
        // 불변 프로퍼티
        let immutableProperty: Int = 100 
        
        // 타입 프로퍼티
        static var typeProperty: Int = 100 
        
        // 인스턴스 메서드
        func instanceMethod() {
            print("instance method")
        }
    }
    2~3タイプのメソッドの再定義
    class ClassName {
    
        // 재정의 불가 타입 메서드 - static
        static func typeMethod() {
            print("type method - static")
        }
        
        // 재정의 가능 타입 메서드 - class
        class func classMethod() {
            print("type method - class")
        }
    }
  • はタイプメソッドと呼ばれますが、前のstatic/classキーワードはタイプメソッドの再定義の性質を変更します.
  • 2-4クラスの使用
    // 인스턴스 생성 - 참조정보 수정 가능
    var mutableReference: ClassName = ClassName()
    mutableReference.mutableProperty = 200
    
    // 인스턴스 생성 - 참조정보 수정 불가
    let immutableReference: ClassName = ClassName()
    immutableReference.mutableProperty = 200
  • クラスは構造体とは異なり、可変(var)および不変(let)は可変属性
  • を使用することができる.
  • ですが、mutableReference.immutableProperty = 200immutableReference.immutableProperty = 200はすべてエラーです
    ->var、letキーに関係なく内部可変属性を変更できます
    // 타입 프로퍼티 및 메서드
    Sample.typeProperty = 300
    Sample.typeMethod() // type method
  • タイプのプロパティを使用すると、構造に大きな違いはありません.
  • 2-5級実習
    class Student {
        // 가변 프로퍼티
        var name: String = "unknown"
    
        // 키워드도 `로 묶어주면 이름으로 사용할 수 있습니다
        var `class`: String = "Swift"
        
        // 타입 메서드
        class func selfIntroduce() {
            print("학생타입입니다")
        }
        
        // 인스턴스 메서드
        // self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항입니다
        func selfIntroduce() {
            print("저는 \(self.class)\(name)입니다")
        }
    }
    
    // 타입 메서드 사용
    Student.selfIntroduce() // 학생타입입니다
    
    // 인스턴스 생성
    var yagom: Student = Student()
    yagom.name = "yagom"
    yagom.class = "스위프트"
    yagom.selfIntroduce()   // 저는 스위프트반 yagom입니다
    
    // 인스턴스 생성
    let jina: Student = Student()
    jina.name = "jina"
    jina.selfIntroduce() // 저는 Swift반 jina입니다
  • 最後のjinalet jina: Studentと宣言するのは可変ですが、jina.name = "jina"のように値を変更できる様子が見られます
  • 3.構造体とクラスの違い
  • 構造体は値タイプ、クラスは参照タイプ
  • である.
    4.構造体とクラスの選択と使用