程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Object-C---)Swift之(八)類和結構體

Object-C---)Swift之(八)類和結構體

編輯:關於C語言

Object-C---)Swift之(八)類和結構體


在Swift中類和結構體有高度的相似性。二者主要區別是:
1. 結構體不支持繼承
2. 結構體不支持定義析構器
3. 結構體是值類型,而類是引用類型

定義類語法格式:

[修飾符]class 類名
{
零個到多個構造器
零個到多個屬性
零個到多個方法
零個到多個下標
}

對一個類定義而言,包括3種最常見的成員:構造器、屬性、方法,如果程序員沒有為一個類提供構造器,則系統會為該類提供一個默認、無參數的構造器。一旦程序員為該類提供了構造器,則系統不會再為該類提供默認的構造器。

#定義結構體語法格式:

[修飾符]struct 結構體名
{
零個到多個構造器
零個到多個屬性
零個到多個方法
零個到多個下標
}

結構體不能定義final,因為結構體不支持繼承。如果程序員沒有為結構體提供構造器,系統則會為該結構體提供兩個構造器:一個無參數的構造器,一個初始化所有存儲屬性的構造器。

定義方法的語法如下:

[修飾符]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)//輸出孫悟空

引用類型比較

引用類型有兩個運算符==和!==,這兩個運算符只能用於引用類型量的比較,當兩個引用類型的變量是否指向同一個實例,當兩個引用變量指向同一個實例時,==比較得到true,當兩個引用變量不指向同一個實例時,!==比較得到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帶的兩個參數的構造器中的一個創建實例,結構體默認會創建兩個構造器:一個無參的構造器和一個初始化所有存儲屬性的構造器。
當調用無參構造器時

var monkey=Monkey()
 print(monkey.age)//輸出0

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved