Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol
2017-03-01 15:28
351 查看
//: Playground - noun: a place where people can play import UIKit /* * 本节主要内容: * 1.枚举 / 结构体 / 类遵循协议 */ protocol Togglable { mutating func toggle() // 没有大括号 } // OnOffSwitch枚举类型遵循了Togglable协议 enum OnOffSwitch: Togglable { case Off case On mutating func toggle() { switch self { case .Off: self = .On case .On: self = .Off } } } var switchOne = OnOffSwitch.On var array: Array<Int> = [] protocol FullNamed { // 属性: var + 类型 + get / get set var fullName: String { get } // { get set } // 自定义方法 func randomValue() -> Int // 类型方法(和类型属性对应) static func someTypeMethod() // mutating关键词的方法 mutating func changeName(newName: String) } struct Person: FullNamed { // ***如果协议的属性是只读, 结构体遵循协议, 属性没有任何要求 // 存储属性 var fullName: String { get { return "" } set { } } var firstName: String? func randomValue() -> Int { return Int(arc4random()%50) } static func someTypeMethod() { print("Call the someTypeMethod.") } mutating func changeName(newName: String) { fullName = newName } } Person.someTypeMethod() protocol Pet { var name: String { get set } var birthPlace: String { get } func playWith() func fedWith(food: String) func changeName(newName: String) } // class Dog: SuperClass, ProtocolName class Dog: Pet { private var myDoggyName = "Puppy" var name: String { get { return myDoggyName } set { myDoggyName = newValue } } var birthPlace: String = "Beijing" func playWith() { print("Play with it for a while.") } func fedWith(food: String = "Bone") { if food == "Bone" { print("Happy") } else { print("Unhapy") } } func changeName(newName: String) { name = newName } } /* * 思考问题: 假设没有声明Pet宠物协议; 声明Pet类, 让dog类继承于Pet */ import UIKit /* * 本节内容: 实现笔记中的流程图 */ protocol Pet { var name: String { get set } } protocol Flyable { var flySpeed: Double { get } var flyHeight: Double { get } } class Animal { } class Dog: Animal, Pet { var name: String = "Puppy" } class Cat: Animal, Pet { var name: String = "Kitty" } class Bird: Animal, Flyable { var flySpeed: Double var flyHeight: Double init(flySpeed: Double, flyHeight: Double) { self.flySpeed = flySpeed self.flyHeight = flyHeight } } class Parrot: Bird, Pet { var name: String init(name: String, flySpeed: Double, flyHeight: Double) { self.name = name super.init(flySpeed: flySpeed, flyHeight: flyHeight) } } class Sparrow: Bird { var color = UIColor.gray } class Vehicle { } class Plane: Vehicle, Flyable { var flySpeed: Double var flyHeight: Double init(flySpeed: Double, flyHeight: Double) { self.flySpeed = flySpeed self.flyHeight = flyHeight } }
相关文章推荐
- 【Swift学习笔记】——enumeration枚举类型遵循协议protocol
- 【Swift学习笔记00】——enumeration枚举类型遵循协议protocol
- Swift -- 结构体、类、枚举继承protocol协议
- Swift学习之路 -- 枚举和结构体
- Swift 学习之枚举和结构体—003
- Swift 系统学习 16 可选值 本质是枚举 (理解)
- Swift语言学习4--枚举和结构体
- swift的枚举、结构体、协议和延展
- Swift中的协议(protocol)学习教程
- Swift 系统学习 18 结构体 改变结构体里面的元素
- swift基础学习(04)[闭包、函数、枚举、类和结构体]
- Swift中的协议(protocol)学习教程
- iOS学习笔记44-Swift(四)枚举和结构体
- Swift 系统学习 19 结构体的默认构造方法和自定义构造方法
- iOS经典讲解之Swift枚举(Enum)、协议(protocol)、扩展(Extension)
- swift 数组、字典、集合、结构体、枚举——swift学习(四)
- Swift_学习笔记_枚举和结构体
- Swift 系统学习 20 结构体 添加可失败的构造方法
- Swift 系统学习 15 枚举