3.3、類的基本使用

//: Playground - noun: a place where people can play

import UIKit

/*swift類:Swift 類是構建代碼所用的一種通用且靈活的構造體。

?格式

?OC @interface Person : NSObject

?@end

?@impeliment

?@end

?*/

// 1.如何聲明一個類?

// 構造函數結束前必須保證所有的屬性被初始化

// 注意:在定義類的屬性時,需要給屬性一個初始化值,或者將屬性聲明成可選類型

// 如果是基本數據類型(值類型),賦值一個初始化值.如果是對象類型,那么聲明稱可選類型

//類是具有相同屬性和方法的抽象

classPerson {//基類

? ? // 類的屬性和方法

? ? varname :String=""

? ? varage :Int=0

? ? varheight :Double=0.0

? ? varbtn :UIButton?

? ? varnumberOfSlide:Int

? ? //構造器

? ? init(number:Int){

? ? ? ? print("init called")

? ? ? ? self.numberOfSlide= number

? ? }

? ? //析構器

? ? deinit {

? ? ? ? print("denied called")

? ? ? ? numberOfSlide = 0

? ? }

}

// 2.創(chuàng)建Person對象

letp :Person=Person(number:3)

p.name = "why"

p.age = 18

p.height = 1.88

p.btn = UIButton()

//1、類是引用類型, 結構體之間的賦值其實是將r2指向了r1的存儲控件, 所以他們是兩個只想同一塊存儲空間, 修改其中一個會影響到另外一個

//2、類沒有逐一構造器

//3.類與結構體的區(qū)別

///MARK: - 結構體

struct Car

{

? ? varname:String!

? ? init(name:String){

? ? ? ? self.name= name

? ? }

}

varp1 =Car(name:"bench")

varp2 =p1

p2.name = "BMW"

print(p2.name,p1.name)

/// 打印結果為BMW,bench

///MARK: - 類

class Car2

{

? ? varname:String!

? ? init(name:String){

? ? ? ? self.name= name

? ? }

}

varp12 =Car2(name:"bench")

varp22 =p12

p22.name = "BMW"

print(p12.name,p22.name)

/// 打印結果為BMW,BMW

//從上面的結果可以看出來,再次給對象賦值,結構體不會改變,而類則會改變原來的值,所以說明類的對象是引用類型,而結構體是值類型。

//還有的區(qū)別就是類是屬于面向對象編程,結構體屬于面向協(xié)議的編程,所謂面向協(xié)議編程其實就是面向對象的升級。在swift中推薦使用的是使用結構體,類在swift中不處于主流的地位,還有就是結構體也能夠實現(xiàn)類的全部功能,結構體更模塊化,默認實現(xiàn)初始化方法并且不用考慮ARC。

//結構體只需要給出變量的類型,不用給出初始值

struct car {

? ? varname:String

}

classcar2 {

? ? varname:String

? ? init(name:String) {

? ? ? ? self.name= name

? ? }

}

//如何選擇使用類還是結構體

//當賦值或者傳遞的時候更希望這些封裝的數據被賦值,而不是被引用過去

//所有被結構存儲的屬性本身也是數值類型

//結構不需要被另外一個類型繼承或者完成其它行為

//一些比較好的使用結構的例子:

//一個幾何形狀的尺寸,可能包括寬度,高度或者其它屬性,每個屬性都是Double類型的

//3D坐標系中的一個點,包括x,y和z坐標,都是Double類型

//在其它情況下(非數值情況下),類會是更好的選擇。也就是說一般情況下,自定義的一些數據結構一般都會被定義為類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容