Object-C----->Swiftの(八)類と構造体


Swiftではクラスと構造体に高い類似性がある.両者の主な違いは:1.構造体は継承をサポートしない.構造体は定義解析器3をサポートしない.構造体は値タイプ、クラスは参照タイプ

クラス構文のフォーマットを定義するには、次の手順に従います。

[ ]class  
{
 
 
 
 
}

クラス定義には、コンストラクタ、プロパティ、メソッドの3つの最も一般的なメンバーが含まれます.プログラマがクラスにコンストラクタを提供していない場合、システムはクラスにデフォルトでパラメータのないコンストラクタを提供します.プログラマがクラスにコンストラクタを提供すると、システムはクラスにデフォルトのコンストラクタを提供しません.

#構造体構文フォーマットを定義するには:

[ ]struct  
{
 
 
 
 
}

構造体は継承をサポートしないためfinalを定義できません.プログラマが構造体にコンストラクタを提供していない場合、システムはその構造体に2つのコンストラクタを提供します.パラメータのないコンストラクタと、すべてのストレージ属性を初期化するコンストラクタです.

メソッドを定義する構文は次のとおりです。

[ ]func  ( )-[-> ]
{
// 
}

クラスメソッドを定義するにはclass修飾子を使用します.
class Person
{
var name:String=""
var age:Int=0
func say(content:String)
{
print(content)
}   
}

上記のコードにはコンストラクタが定義されていません.デフォルトのパラメータなしコンストラクタが提供されますが、このデフォルトのコンストラクタはストレージ属性に初期値を割り当てることはありません.そのため、これらのストレージ属性に初期値を指定するプログラムが必要です.注:クラスは参照タイプです
        var p:Person
        p=Person()
        p.name=" "
        var p1=p
        p1.name=" "
        print(p.name)// 

参照タイプの比較


参照タイプには、2つの演算子==と!==があります.この2つの演算子は、参照タイプ量の比較にのみ使用できます.2つの参照タイプの変数が同じインスタンスを指しているかどうか、2つの参照変数が同じインスタンスを指している場合==比較してtrueが得られます.2つの参照変数が同じインスタンスを指していない場合!==比較してtrueを得る
class Person
{
var name:String=""
var age:Int=0
init(name:String,age:Int)
{
self.name=name
self.age=age
 }
func say(content:String)
{
print(content)
}
}
var p1=Person(name:" ",age:2100)
var p2=Person(name:" ",age:48)
print(p1==p2)// false
print(p1 !== p2) true
var p3=p1
print(p1 == p3)// true

構造体について話しましょう

struct Monkey
{
var name:String
var age:Int
func say()
{
print("\(name) \(age)")
}
 }
 var monkey=Monkey(name:" ",age:1500)
 print(monkey.name)

上記のコードは、Monkeyバンドの2つのパラメータのコンストラクタの1つの作成インスタンスを呼び出します.コンストラクタのデフォルトでは、2つのコンストラクタが作成されます.1つのパラメトリックコンストラクタと、すべてのストレージ属性を初期化するコンストラクタです.非パラメトリックコンストラクタが呼び出されると
var monkey=Monkey()
 print(monkey.age)// 0