1. 成員與類的權限
- 權限:internal/pravite/public
- 默認為internal:在當前應用或模塊可見
- pravite: 在當前文件中使用
- public: 在其他地方都可見
- 成員的權限不能超過類的權限
2. 類的封裝
class hummen {//封裝
var name : String = ""
var age : UInt = 0
private var weight : Double = 0
var height : Double = 0
}
var p3 = people()
p3.name = "李雪"
print(p3.name)
var p4 = p3
p4.height = 34
print(p4.height, p4.name)
class tangle {//可定義存儲屬性,也可定義計算屬性
var height : Double = 0
var weight : Double = 0
var name : String!{
willSet(value){//儲存屬性
print("將\(name)設置為:(value)")
}
didSet{
print("已經設置為:\(name)")
}
}
var area:Double{//計算屬性
set{
height = sqrt(newValue)
weight = sqrt(newValue)
}
get {
return height * weight
}
//return height * weight
}
func same() {
print("this is the same")
}
}
var t1 = tangle()
t1.height = 24
t1.weight = 5
t1.name = "張三"
print(t1.area)
3. 類的繼承
- swift中類的繼承是單繼承,只有一個父類,也可以沒有父類
- 可繼承父類中所有的成員和方法
- 也可以重新構造父類的方法
class rectangle: tangle {//繼承tangle
var width : Double = 0
func diffrent() {
print("this is diffrent")
}
override func same() {//重新構造父類的方法,需添加關鍵字override
print("this the same")
}
}
var re1 = rectangle()
re1.diffrent()
re1.same()
var re2 : tangle//聲明為tangle類
re2 = rectangle()//re2實際為rectangle類,但是還是tangle類
var re3 = re2 as! rectangle//將re2強制轉換為rectangle類
re2.same()
re3.diffrent()
4. 類的協議與擴展
4.1 協議的作用
- 將不同父類的類通過一些描述特征將其歸為一類進行管理
協議的定義
protocol extra {
func condition()
}
協議的實現
class Clothes : extra{
func condition() {
print("Cloth is dry~")
}
}
4.2 擴展的作用
- 將已有的類型進行添加功能或是方法,也可以添加類的功能
- 不能創建存儲屬性,只能創建計算屬性
//也可以給類添加功能,“類型”沒有局限
extension Int{//給已有類型添加功能,擴展Int類型中的某些功能,包括方法
//var i = 123//不能創建存儲屬性,只能是計算屬性
var i : Int{
return self * 2
}
func InfoPrint(number : Int, number1 :Int) -> Int {
return number * self + number1
}
}
var s = 123
print(s.i, s.InfoPrint(3, number1: 4))
extension Clothes {
func condition() {
print("Cloth is dry~")
}
}
5. 計算符重載
- 重新定義計算符,使其能在特定的函數中實現符號的功能
func 符號()->類型{}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。