Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol

原创 2017年03月01日 15:28:18
//: 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
    }
}









版权声明:本文为博主原创文章,未经博主允许不得转载。本文针对于有一定Objective-C语言基础的人群,听说面试的时候要博客,然后就整理了一点资料发出来, 共同学习!!

相关文章推荐

iOS巅峰之Swift结构体和类, 枚举, 构造器, 继承, 协议, 扩展(完结篇)

// 结构体和类 // 在Swift中, 结构体被做了很多强化, 几乎所有的数据类型都是用结构体实现的 // 相同点:1.都可以定义变量  2.都可以定义方法  3.都可以定义构造器 init  4....

Swift 系统学习 22 分析错误的三个阶段 (枚举和结构体相关)

//: Playground - noun: a place where people can play import UIKit /* * 本节主要内容: * 1.分析错误处理的三个阶段 ...

Swift-枚举、结构体、协议

用enum来创建枚举。不同的是,在Swift中,枚举可以包含方法。 我们用扑克牌来举个栗子,Rank是对牌值的枚举,A,2~10,J,Q,K。 enum Rank: Int { case ...

swift的枚举、结构体、协议和延展

1、枚举 如果枚举为Int类型 ,那么该枚举就会有rawValueenum Rank :Int{ case Ace = 1 case Two ,Three,Four,Five,...

swift基础学习(04)[闭包、函数、枚举、类和结构体]

闭包、函数、枚举、类和结构体

Swift 学习笔记 [2] 类 结构体 枚举

结构体、枚举、类 学习 学了还是要用,第一版Swift文档出来的时候,还凑热闹学了一次,现在都忘得差不多了。这次至少要做个小项目出来练练手才不至于生疏。...

《从零开始学Swift》学习笔记(Day 30)——选择类还是结构体呢?

原创文章,欢迎转载。转载请注明:关东升的博客  类和结构体非常相似,很多情况下没有区别。如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体? 类和结构体异同:类和结构体都有如下功能:...

Swift学习之路 -- 枚举和结构体

本文学习自《 The Swift Programming Language-swift2.0官方手册 中文版》的电子版 是记录自己的Swift学习历程、整理相关资料便于查看枚举使用enum来创建一个...

Swift_学习笔记_枚举和结构体

枚举 Swift中的枚举除了具有基本的类型限制和别名使用外,还可以进行继承以及遵守协议。...

iOS学习笔记44-Swift(四)枚举和结构体

一、Swift的枚举枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值。 Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol
举报原因:
原因补充:

(最多只允许输入30个字)