Swift學習筆記 物件導向(2)

2021-07-03 04:06:43 字數 3618 閱讀 1172

//定義計算屬性

/**[修飾符] var 計算屬性名 : 屬性型別

set(形參名)

}1,修飾符可省略

2.var: 只能定義成變數,因此只能使用var

*///使用列舉定義乙個計算屬性

enum season

}//set

set (newvalue)

}}var s = season.spring//正在執行getter方法

//春暖花開

println(s.info)//正在執行setter方法,傳入引數為:秋高氣爽

s.info = "秋高氣爽"

//下乙個例子

class user

//set,負責改變該例項的first,last 兩個儲存屬性

// set(newvalue)

//簡化set方法,省略se的形參

set }

init (first : string , last :string)

}let m = user(first: "jiang", last: "jun")

println(m.fullname)//jiang-jun

m.fullname = "宇宇-芾"

println(m.first

)//宇宇

//芾println(m.last)

//唯讀屬性,省略get關鍵字,唯讀屬性,不能被賦值,

class user1

init (first : string, last : string)

}let q = user(first:"jiang", last: "jun")

println(q.fullname)//jiang-jun

//屬性觀察者

//willset(newvalue):被觀察的屬性即將被賦值之前自動呼叫該方法

//didset(oldvalue):被觀察的屬性被賦值完成之後自動呼叫的方法

/*屬性觀察者,可以監聽如下屬性變化

1.除了延遲儲存屬性之外的所有儲存屬性

2.可通過過載方式為繼承得到的屬性新增屬性觀察者

*//*

語法:[修飾符] var 儲存屬性名 :屬性型別 [= 初始值]

didset(oldvalue)

}*/class person1

else

}didset

}var age : int = 0 else

}didset

}}var w = person1()

w.age = 1000

w.age = 30

/*你的設定的年齡1000不符合要求,請重新設定!

年齡為:0

設定成功

年齡為:1000

30*/

println(w.age)

w.name = "jiangjun"

/*您設定的人名jiangjun不符合要求,請重新設定

人名設定完成,被修改的原名為:

jiangjun

*/println(w.name)

w.name = "宇宇芾"

//符合要求 人名設定完成,被修改的原名為:jiangjun 宇宇芾

println(w.name)

//將方法轉成函式

class someclass

class func bar(#msg : string)

}var sc = someclass()

//將sc的test方法分離成函式

var f1 : () ->() = sc.test

//將bar的型別方法分離成函式

var f2 :(string) ->() = someclass.bar

//以下**等同

sc.test()

f1()

//以下**等同

someclass.bar(msg: "測試資訊")

f2("測試資訊")

//方法的外部形參名,swift會隱式新增

enum gender

}}gender.male.info("text", count: 5, name: "jiangjun")

//值型別的可變方法

struct fkrect

}//建立fkrect例項

var rect = fkrect(x: 20, y: 23, width: 200, height: 200)

rect.movebyx(100, y: 80)

println("\(rect.x),\(rect.y)")//120,103

//可選鏈

//使用可選鏈代替強制解析

class customer

//使用可選鏈呼叫方法

let employees = [

employee(name: "靜靜", title: "客服"),

employee(name: "文文", title: "售後")

]//該方法可根據員工名返回對應的員工,返回值為可選型別

func findemp (empname:string) ->employee!

}return nil

}}class employee

}class company

}//如果customer訪問對應的公司的名稱

var c = customer(name: "宇宇")

var emp = employee(name: "靜靜", title: "客服")

//設定customer關聯的employee例項

c.emp = emp

//設定employee關聯company

emp.company = company(name: "新創公司", addr: "嘉定區,馬路")

println("\(c.name),\(c.emp!.company.name)")//宇宇,新創公司

//使用可選鏈

var c2 = customer(name: "宇宇")

c2.emp = employee(name: "靜靜", title: "客服")

//可選訪問屬性

println("\(c2.name),\(c2.emp?.company?.name)")//宇宇,nil

//printlnprintln("\(c2.name),\(c2.emp!.company.name)")//報錯

var c3 = customer(name: "jiangjun")

println("\(c3.name),\(c3.emp?.company?.name)")//jiangjun,nil

//println("\(c3.name),\(c3.emp!.company.name)")//報錯

enum season

set

}}season.desc = "季節類"

println(season.name)//季節

season.info = "新的info"

println(season.info)//代表季節的列舉,其desc為:optional("季節類")

本文部分內容來自《swift瘋狂講義》

Swift學習筆記 物件導向

可以定義列舉,結構體,類,3種物件導向的型別,物件導向的兩大核心是類和物件 2.物件導向程式設計的3大特徵,封裝,繼承 swift使用協議彌補了單繼承靈活性不足的缺點 多型 語言中結構體和列舉不具有物件導向的特徵,swift中多了結構體和列舉這兩種程式單元 1.列舉 swift的列舉不像c那麼簡單,...

Swift學習4 物件導向

一 類與物件 對於swift的類的構建和一般物件導向語言類似也是class關鍵字宣告,示例如下 class hello 上面建立了乙個hello類,包含了乙個sayhello方法。我們可以通過下面的 來呼叫方法。var hello hello hello.sayhello 輸出 hello 二 構造...

物件導向java學習筆記2

x abc y x和y指向同乙個。x abc y abc x和y的值相同。拓 char x abc char y abc x y的結果是false,判讀的是指標引用的記憶體位址不同 x y的結果是true,兩個指標位址所儲存的數值相同。例項1 package oolearning public cl...