//定義計算屬性
/**[修飾符] 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...