Object-C----->Swiftの(八)類と構造体
Swiftではクラスと構造体に高い類似性がある.両者の主な違いは:1.構造体は継承をサポートしない.構造体は定義解析器3をサポートしない.構造体は値タイプ、クラスは参照タイプ
クラス定義には、コンストラクタ、プロパティ、メソッドの3つの最も一般的なメンバーが含まれます.プログラマがクラスにコンストラクタを提供していない場合、システムはクラスにデフォルトでパラメータのないコンストラクタを提供します.プログラマがクラスにコンストラクタを提供すると、システムはクラスにデフォルトのコンストラクタを提供しません.
構造体は継承をサポートしないためfinalを定義できません.プログラマが構造体にコンストラクタを提供していない場合、システムはその構造体に2つのコンストラクタを提供します.パラメータのないコンストラクタと、すべてのストレージ属性を初期化するコンストラクタです.
クラスメソッドを定義するにはclass修飾子を使用します.
上記のコードにはコンストラクタが定義されていません.デフォルトのパラメータなしコンストラクタが提供されますが、このデフォルトのコンストラクタはストレージ属性に初期値を割り当てることはありません.そのため、これらのストレージ属性に初期値を指定するプログラムが必要です.注:クラスは参照タイプです
参照タイプには、2つの演算子==と!==があります.この2つの演算子は、参照タイプ量の比較にのみ使用できます.2つの参照タイプの変数が同じインスタンスを指しているかどうか、2つの参照変数が同じインスタンスを指している場合==比較してtrueが得られます.2つの参照変数が同じインスタンスを指していない場合!==比較してtrueを得る
上記のコードは、Monkeyバンドの2つのパラメータのコンストラクタの1つの作成インスタンスを呼び出します.コンストラクタのデフォルトでは、2つのコンストラクタが作成されます.1つのパラメトリックコンストラクタと、すべてのストレージ属性を初期化するコンストラクタです.非パラメトリックコンストラクタが呼び出されると
クラス構文のフォーマットを定義するには、次の手順に従います。
[ ]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