Swift:ベース(19)クラス

2511 ワード

クラスと構造体の比較
Swiftにはクラスと構造体に多くの共通点がある.共通点は次のとおりです.
  • は、値
  • を記憶するための属性を定義する.
  • は、機能
  • を提供するための方法を定義する.
  • は、値
  • にアクセスするための付属スクリプトを定義する.
  • は、初期化値
  • を生成するコンストラクタを定義する.
  • デフォルト実装機能を追加するために拡張する
  • は、あるクラスに標準機能を提供するためのプロトコルに合致する
  • である.
    クラスには、構造体と比較して、次のような追加機能があります.
  • 継承は、あるクラスが別のクラスを継承することを可能にする特徴
  • である.
  • のタイプ変換により、実行時にクラスインスタンスのタイプ
  • をチェックおよび解釈することができる.
  • デフォーマは、クラスインスタンスが割り当てられたリソース
  • を解放することを可能にする.
  • 参照カウントは、1つのクラスに対する複数回の参照を許可する
  • 構文:
    class classname {
       Definition 1
       Definition 2
       ……
       Definition N
    }
    

    クラス定義
    class student{
       var studname: String
       var mark: Int 
       var mark2: Int 
    }
    

    クラスのインスタンス化:
    let studrecord = student()
    

    ≪インスタンス|Instance|emdw≫
    import Cocoa
    
    class MarksStruct {
        var mark: Int
        init(mark: Int) {
            self.mark = mark
        }
    }
    
    class studentMarks {
        var mark = 300
    }
    let marks = studentMarks()
    print("    \(marks.mark)")
    

    以上のプログラムの実行出力結果は以下の通りです.
        300
    

    参照タイプとしてクラス属性にアクセス
    クラスの属性は.訪問に来る.形式は:クラス名をインスタンス化します.属性名:
    import Cocoa
    
    class MarksStruct {
       var mark: Int
       init(mark: Int) {
          self.mark = mark
       }
    }
    
    class studentMarks {
       var mark1 = 300
       var mark2 = 400
       var mark3 = 900
    }
    let marks = studentMarks()
    print("Mark1 is \(marks.mark1)")
    print("Mark2 is \(marks.mark2)")
    print("Mark3 is \(marks.mark3)")
    

    以上のプログラムの実行出力結果は以下の通りです.
    Mark1 is 300
    Mark2 is 400
    Mark3 is 900
    

    ていとうえんざんし
    クラスが参照タイプであるため、複数の定数と変数がバックグラウンドでクラスインスタンスを同時に参照する可能性があります.
    2つの定数または変数が同じクラスインスタンスを参照しているかどうかを判定するために、Swiftには2つの恒等演算子が作成されています.
    ていとうえんざんし
    ふていじょうえんざんし
    演算子:==
    演算子:!==
    2つの定数または変数が同じクラスインスタンスを参照する場合はtrueを返します.
    2つの定数または変数が異なるクラスインスタンスを参照する場合はtrueを返します.
    ≪インスタンス|Instance|emdw≫
    import Cocoa
    
    class SampleClass: Equatable {
        let myProperty: String
        init(s: String) {
            myProperty = s
        }
    }
    func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
        return lhs.myProperty == rhs.myProperty
    }
    
    let spClass1 = SampleClass(s: "Hello")
    let spClass2 = SampleClass(s: "Hello")
    
    if spClass1 === spClass2 {// false
        print("         \(spClass1)")
    }
    
    if spClass1 !== spClass2 {// true
        print("          \(spClass2)")
    }
    

    以上のプログラムの実行出力結果は以下の通りです.
              SampleClass