Swift学习笔记9——类和结构体(Classes and Structures)
来源:互联网 发布:软件公寓户型图 编辑:程序博客网 时间:2024/06/05 19:11
Swift中,类和结构体是很相近的。所有下面类和结构体的实例都统称为实例。不再单独为类的实例称为对象。
和C或OC,不同,swift的类只写在一个文件里面。这点和java一样。
类和结构体的共同点:
1、能定义属性用来存储值
2、能定义方法实现功能
3、能定义下标来得到值
4、具有初始化构造器初始化实例
5、能被扩展
6、能实现协议
类比结构体多出来的特点:
1、能被继承
2、能在运行时使用类型转换判断一个实例是否为某个类
3、具有析构器
4、引用计数可以大于1,使得可以有多个引用指向同一个类的实例(注明:结构体是值传递,所有没有引用计数)
下面定义一个类和结构体,这里先提一下,类的每个属性都给了默认值,除了可选类型之外。这个是swift要求的,以后文章会详细讲到。
struct CPU { var clockSpeed = 1.0 var coreNum = 4}class Telephone { var cpu = CPU() // CPU()是CPU结构体的默认构造器。它生成一个CPU实例,以后构造器的文章详细讲这方面内容 var screenSize = 5.0 var price: Int?}然后定义他们的实例
var myTelephone = Telephone()var newCPU = CPU()
注意结构体是值传递,而类是引用传递。下面的代码清楚说明了这个特点。
var myTelephone = Telephone()var newCPU = CPU()print(myTelephone.cpu.clockSpeed) //1.0 swift使用点语法来获得属性newCPU.clockSpeed = 2.0myTelephone.cpu = newCPU //给myTelephone一个新的CPUprint(myTelephone.cpu.clockSpeed) //2.0newCPU.clockSpeed = 2.2print(myTelephone.cpu.clockSpeed) //2.0 赋值后修改newCPU并不影响myTelephone里面的CPUvar cpu = myTelephone.cpu //取出一份CPU,但是是值传递cpu.clockSpeed = 3.0print(myTelephone.cpu.clockSpeed) //2.0 所以修改取出的cpu不影响myTelephone里面的var yourTelephone = myTelephone // 定义一个yourTelephone,它指向myTelephone的同一个实例yourTelephone.screenSize = 6.0print(myTelephone.screenSize) //6.0 修改yourTelephone会影响myTelephone
Array,String,Dictionary都是值传递。这个和OC是不一样的。值得注意。
结构体自带一个遍历所有属性的构造器,但是类没有。
var cpu2 = CPU(clockSpeed: 3.3, coreNum: 8)
===用来判断两个变量是否指向同一个类的实例。如果是返回true。
!==反之。指向不同实例,返回true。
而 == 是判断两个实例是否“相等”,这个相等的条件可以有类的定义者自己决定。
0 0
- Swift学习笔记9——类和结构体(Classes and Structures)
- Swift类和结构体(Classes and Structures)
- Swift 类和结构体(Classes and Structures)
- 对照Java学习Swift--类和结构体(Classes and Structures)
- Swift-类和结构体(Class and Structures)(八)
- 类和结构体—Swift学习笔记(十二)
- swift学习笔记(9)-结构体和类
- 【Swift】学习笔记(八)——类和结构体
- Swift学习笔记—— 类和结构体
- 浅学Swift 3.0.1中的Classes and structures
- 学习Swift笔记 (十)Swift的类和结构
- 学习Swift笔记 (十三)Swift的类和结构
- Swift学习笔记系列——(8)类和结构体
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
- The Swift Programming Language学习笔记(十)——类和结构体
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
- Swift学习笔记(14)——类和结构体
- Classes and Structures
- 计算机图形学三种渲染(绘制)技术,rendering technology
- SuiShenJi项目_按钮等背景样式
- MacOs下安装go lang
- Java学习笔记----static关键字
- Android:AsyncTask的二次使用
- Swift学习笔记9——类和结构体(Classes and Structures)
- 如何获得数据库中的数据库名,表名,字段名,字段个数
- DirectX11 光照演示示例Demo
- deepin配置root登入
- Swift 2.0 之map 与 zip
- PAT1011 A+B和C (15)
- 黑马程序员——Java基础(二)运算符,控制语句
- Sum Root to Leaf Numbers
- Android Material Design:CoordinatorLayout与NestedScrollView