Swift初探之----------類,協(xié)議

/**
* 類
*/

// 類的格式: class 關(guān)鍵字 + 類名 {類的實(shí)現(xiàn)} class Person { // 在類里面創(chuàng)建一個(gè)屬性的時(shí)候, 必須有初值, 如果不想設(shè)置初值, 那么就設(shè)置成為可選類型 var name : String? = nil var age : Int? = nil // private 表示私有屬性 private var sex : String? = nil // static 修飾的屬性表示類 屬性 static var country : String? = nil

// init(name newName : String, age newAge : Int) { // self.name = newName // self.age = newAge // } init(name : String, age : Int) { self.name = name self.age = age } // 實(shí)例方法里面不能直接調(diào)用類屬性 // 實(shí)例方法可以直接對(duì)實(shí)例對(duì)象進(jìn)行修改賦值 // 在函數(shù)聲明之前添加一個(gè)private 表示私有方法 private func sayHi() { self.sex = "女" print(self.sex) } // static 修飾的是類方法 // static 修飾的方法是不可以被子類重寫的 static func sayHello() { self.country = "中國(guó)" print(self.country) } // class 修飾的也是類方法 // class 修飾的類方法可以被子類重寫 class func sayGood() { self.country = "天朝" print(self.country) } }

let person : Person = Person.init(name: "好的", age: 10)

person.sayHi() Person.sayHello()

class Student: Person { var person : Person? = nil var number : Int? = nil // 如果子類想重寫父類的方法, 需要添加override修飾 override init(name: String, age: Int) { super.init(name: name, age: age) } override class func sayGood() { self.country = "天朝" print(self.country) } }

/**
* 協(xié)議
*/

// 格式 protocol 關(guān)鍵字 + 協(xié)議名字 protocol myDelegate { // 協(xié)議方法前面添加mutating修飾的關(guān)鍵字,在結(jié)構(gòu)體內(nèi)部可以修改結(jié)構(gòu)體的 mutating func hh() } // 如果有需要可選實(shí)現(xiàn)的協(xié)議 // 在最前面加上@objc 修飾, 內(nèi)部實(shí)現(xiàn)方法用optional修飾可選實(shí)現(xiàn)方法, 其他不變 @objc protocol newDelegate { optional func llll() }

// 如果一個(gè)類既有父類 也遵守了某個(gè)協(xié)議, 那么格式是 // class + 類名: 父類, 協(xié)議名字 //class Teacher1: Person, myDelegate, newDelegate { // func hh() { // // } //}

// 結(jié)構(gòu)體可以遵守協(xié)議 // 但結(jié)構(gòu)體只能遵守Swift的協(xié)議 struct supperMan : myDelegate { var name : String mutating func hh() { self.name = "sdf" } } // extension 可以給一個(gè)類擴(kuò)展新的協(xié)議 extension Person : myDelegate { func hh() { }
// extension 不可以添加新的屬性 // var height : Float? = nil // 可以給一個(gè)類添加新的函數(shù) func wang() { } }

extension Frame : myDelegate { func hh() { } }

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

相關(guān)閱讀更多精彩內(nèi)容

  • 132.轉(zhuǎn)換錯(cuò)誤成可選值 通過轉(zhuǎn)換錯(cuò)誤成一個(gè)可選值,你可以使用 try? 來處理錯(cuò)誤。當(dāng)執(zhí)行try?表達(dá)式時(shí),如果...
    無灃閱讀 1,471評(píng)論 0 3
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,121評(píng)論 0 6
  • Swift 介紹 簡(jiǎn)介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,446評(píng)論 3 25
  • 126.析構(gòu)器 在一個(gè)類實(shí)例銷毀前,一個(gè)析構(gòu)器會(huì)立即調(diào)用。使用deinit 關(guān)鍵字來表示析構(gòu)器, 跟構(gòu)造器寫法類似...
    無灃閱讀 910評(píng)論 0 4
  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,441評(píng)論 1 6

友情鏈接更多精彩內(nèi)容