Swift類與結構、儲存屬性、計算屬性、函數與方法、附屬指令碼等

來源:互聯網
上載者:User

一、類與結構體

兩者在Swift中差不了多少了

類與結構體有很多相同的地方: (第2,3點是其他語言中不存在的)

1)都可以定義屬性/方法/下標(結構體也可以定義方法了)

2)都能初始化(通過構造方法)

3)都能使用擴充(extension)與協議(protocol)

4)類與結構體(枚舉)中的全域屬性/方法:在類中用class關鍵字,但在結構體中用static


類比結構體多的功能:

1)能繼承

2)運行時能檢查類對象的類型

3)析構釋放資源

4)引用計數允許一個類執行個體有多個引用

[java]  view plain  copy class Person1{       var name = "jack"   //    class var height:Int = 10   //錯誤! 類中不能有全域儲存屬性的, 只能是計算屬性. 見下文說明   }      struct Person2{   //結構體更像Java中的類       var age:Int   //    static var height:Int = 10  //可以設定全域屬性, 需要初始化.   }      //1.1執行個體化類與結構, 預設構造器   let p1 = Person1()   let p2 = Person2(age: 10)  //當使用預設構造器時, 必須初始化裡面所有的屬性  


二、屬性(儲存屬性--計算屬性--類屬性)

2.1儲存屬性: 就是儲存一個常量或變數,類似Java中的成員變數 [java]  view plain  copy   class Person3{       var name:String = "xuneng"  //需要手動初始化       var age:Int = 10       let height = 175       lazy var p1:Person1 = Person1() //延遲, 必須是var   }      var p3 = Person3()   p3.name   //通過點文法來訪問   p3.age = 11   //設定      //延遲lazy儲存屬性: 當使用改屬性時才進行初始化, 好處是避免空間浪費   println(p3.p1)   //這句調用時, p1才進行初始化  

2.2計算屬性: 不直接儲存值,而是用get/set來做.可用來操作其他屬性值的變化

get: 取, 用來封裝取值的過程

set: 設, 用來封裝設值的過程

[java]  view plain  copy   class Person4{       var name:String = "jack"       var jjLength:Int = 10       var age:Int{  //只能是var           get{               return jjLength * 2           }           set(newAge){               jjLength = newAge / 2  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.