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






目录
相关文章
|
存储 iOS开发 Swift
iOS - Swift 面向对象语法
1、面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析。如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块。每一个解决的步骤可能是一行或者几行代码,也可能是一个函数。
947 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
93 2
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
205 2
|
3月前
|
监控 Swift iOS开发
局域网计算机监控软件中利用Swift构建iOS端的移动监控应用
在局域网计算机监控软件的开发中,构建iOS端的移动监控应用是一项关键任务。本文将介绍如何利用Swift语言实现这一目标,通过多个代码示例展示关键功能的实现。
225 1
|
3月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
67 0