Swift-classes

提供:Dev Guides
移動先:案内検索

スイフト-クラス

Swift 4のクラスは、柔軟な構造のビルディングブロックです。 定数、変数、関数と同様に、ユーザーはクラスのプロパティとメソッドを定義できます。 Swift 4は、クラスを宣言する際にユーザーがインターフェースや実装ファイルを作成する必要がない機能を提供します。 Swift 4では、クラスを単一のファイルとして作成でき、クラスが初期化されるとデフォルトで外部インターフェースが作成されます。

クラスを持つことの利点

  • 継承は、あるクラスのプロパティを別のクラスに取得します
  • 型キャストにより、ユーザーは実行時にクラス型を確認できます
  • 初期化解除はメモリリソースの解放を処理します
  • 参照カウントにより、クラスインスタンスに複数の参照を持たせることができます

クラスと構造の共通特性

  • プロパティを定義して値を保存します
  • 値へのアクセスを提供するための添え字が定義されています
  • 機能を改善するためにメソッドが初期化されます
  • 初期状態は初期化子によって定義されます
  • 機能はデフォルト値を超えて拡張されています
  • プロトコル機能標準の確認

構文

Class classname {
   Definition 1
   Definition 2
   ---
   Definition N
}

クラス定義

class student {
   var studname: String
   var mark: Int
   var mark2: Int
}

インスタンスを作成するための構文

let studrecord = student()

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark = 300
}

let marks = studentMarks()
print("Mark is \(marks.mark)")

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

Mark is 300

参照型としてのクラスプロパティへのアクセス

クラスのプロパティには「。」でアクセスできます構文。 プロパティ名は「。」で区切られますインスタンス名の後。

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

クラスID演算子

Swift 4のクラスは、単一のインスタンスを指す複数の定数と変数を参照します。 特定のクラスインスタンスID演算子を指す定数と変数について知るために使用されます。 クラスインスタンスは常に参照渡しされます。 クラスでは、NSString、NSArray、およびNSDictionaryインスタンスは常にコピーとしてではなく、既存のインスタンスへの参照として割り当てられ、渡されます。

Identical to Operators Not Identical to Operators
Operator used is (===) Operator used is (!==)
Returns true when two constants or variables pointing to a same instance Returns true when two constants or variables pointing to a different instance
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")

spClass1 === spClass2//false
print("\(spClass1)")

spClass1 !== spClass2//true
print("\(spClass2)")

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

main.SampleClass
main.SampleClass