27 Swift面向对象概述

简介: Swift面向对象概述

Swift面向对象概述

面向对象的三大特性

  • 继承
  • 封装
  • 多态

基本单元

  • 枚举
  • 结构体
  • 协议
  • 扩展

面向对象概述

  • 从整体的功能上看Swift的枚举、结构体、类三者具有完全平等的地位
  • Swift的类、结构体、枚举中都可以定义(属性、方法、下标、构造体、嵌套类型)
  • 在Swift中,枚举和结构体是值类型的,类是引用类型


类和结构体的相似点

  • 定义属性用来存储值
  • 定义方法用于提供功能
  • 定义下标脚本用来允许使用下标语法访问值
  • 定义初始化器用于初始化状态
  • 可以被扩展来默认所没有的功能
  • 遵循协议来针对特定类型提供标准功能


类和结构体不同点

  • 继承允许一个类继承另一个类的特征
  • 类型转换允许你在运行检查和解释一个类实例的类型
  • 反初始化器允许一个类实例释放任何其所被分配的资源
  • 引用计数允许不止一个对类实例的引用


枚举从此站了起来

枚举语法

  • 用enum关键字来定义一个枚举,然后将其所有的定义内容放在一个大括号({})中
  • 多个成员值可以出现在同一行中,要用逗号隔开


image.png

每一个枚举都定义了一个全新的类型。正如Swift中其他的类型那样,它们的名称(例如:CompassPoint和Planet)需要首字母大写。给枚举类型起一个单数的而不是复数的名字,从而使得它们能够顾名思义


image.png

使用Switch语句来匹配枚举值

  • 你可以用Switch语句来匹配每一个单独的枚举值


image.png

遍历枚举的case

  • 对于某些枚举来说,如果能有一个集合包含了枚举的所有情况就好了。你可以通过在枚举名字后面写:Caselterable来允许枚举被遍历。Swift会暴露一个包含对应枚举类型所有情况的集合名为allCases


image.png

关联值

  • 可以定义Swift枚举来存储任意给定类型的关联值,如果需要的话不同枚举成员关联值的类型可以不同

[左边是一个条形码]右边是一个二维码

image.png

image.png

原始值

  • 枚举成员可以用相同类型的默认值预先填充(成为原始值)


image.png

预设原始值

  • 当你在操作存储整数或字符串原始值枚举的时候,你不必显式地给每一个成员都分配一个原始值。当你没有分配时,Swift将会自动为你分配值

image.png

从原始值初始化

  • 如果你用原始值类型来定义一个枚举,那么枚举就会自动收到一个可以接受原始值类型的值的初始化器(叫做rawValue的形式参数)然后返回一个枚举成员或者nil。你可以使用这个初始化器来尝试创建一个枚举的新实例


image.png

递归枚举

  • 递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器操作递归枚举时必须插入间接寻址层。你可以在声明枚举成员之前使用indirect关键字来明确它是递归的
  • 如说表达式(5 + 4) * 2在乘法右侧有一个数但有其他表达式在乘法的左侧


image.png

image.png






目录
相关文章
|
Swift C++ 索引
33 Swift泛型的发展历史与泛型的概述
Swift泛型的发展历史与泛型的概述
61 0
|
存储 iOS开发 Swift
iOS - Swift 面向对象语法
1、面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析。如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块。每一个解决的步骤可能是一行或者几行代码,也可能是一个函数。
971 0
|
iOS开发 Swift 安全
Swift 概述及Swift运算符和表达式
<p>Swift  是用于设计 iOS 及 Mac OS X 应用的一门新 语言。</p> <p> </p> <p>Swift 特点</p> <p> </p> <p>•   Swift  保留了 C  与 Objective-C 的优点,并摒弃 其为了兼容 C  语言所受的限制。</p> <p> </p> <p>•    Swift吸纳了安全编程模式,并新增了一些现代 化功能,使其更易使用、更
1166 0
|
4月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
142 3
|
16天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
31 1