【笔记】Swift的面向对象

前言

Swift的面向对象

定义类

  • 类名命名规则为大驼峰
  • 类是按引用传递的
1
2
3
class 类名 {
...
}

类中定义属性

  • 类中定义的属性必须初始化,可以直接赋值,也可以在初始化方法中初始化
1
2
3
class 类名 {
var 属性名: 数据类型 =
}

类中定义方法

  • 方法名命名规则为小驼峰
1
2
3
4
5
class 类名 {
func 方法名() {
...
}
}
  • 类中可以直接通过属性名来修改实例的属性
1
2
3
4
5
6
7
class 结构体名 {
let 属性名: 数据类型

func 函数名(变量名: 数据类型) {
属性名 = 变量名
}
}

类中定义初始化方法

  • 通过self关键字获取实例的属性
1
2
3
4
5
6
7
class 类名 {
var 属性名: 数据类型

init(变量名: 数据类型) {
self.属性名 = 变量名
}
}

实例化类为对象

  • 对象名命名规则为小驼峰
1
let 对象名 = 类名()

通过初始化方法实例化类为对象

1
let 对象名 = 类名(形参名: 值)

获取对象的属性

1
对象名.属性名

调用对象的方法

1
对象名.方法名()

继承

子类继承父类

1
2
3
4
5
6
7
class 父类名 {
...
}

class 子类名: 父类名 {
...
}

方法的重写

1
2
3
4
5
6
7
8
9
10
11
class 父类名 {
func 父类方法名() {
...
}
}

class 子类名: 父类名 {
override func 父类方法名() {
...
}
}
  • 简写
1
2
3
4
5
6
7
8
9
10
11
class 父类名 {
func 父类方法名() {
...
}
}

class 子类名: 父类名 {
func 父类方法名() {
...
}
}

协议

定义协议

1
2
3
protocol 协议名 {
func 协议规定的函数名()
}

认证协议

结构体

1
2
3
4
5
struct 结构体名: 协议名 {
func 协议规定的函数名() {
...
}
}

1
2
3
4
5
class 类名: 协议名 {
func 协议规定的函数名() {
...
}
}
多个协议
1
2
3
4
5
6
7
8
class 类名: 协议名1, 协议名2 {
func 协议1规定的函数名() {
...
}
func 协议2规定的函数名() {
...
}
}
有父类
  • 父类要写在前面
1
2
3
4
5
class 类名: 父类名, 协议名 {
func 协议规定的函数名() {
...
}
}
多个协议
1
2
3
4
5
6
7
8
class 类名: 父类名, 协议名1, 协议名2 {
func 协议1规定的函数名() {
...
}
func 协议2规定的函数名() {
...
}
}

协议修饰参数

1
2
3
4
5
struct 结构体名 {
function 函数名(变量名: 协议名) {
变量名.协议规定的函数名()
}
}

协议修饰字段

1
2
3
4
5
6
7
class 类名 {
var 字段名: 协议名?

func 函数名() {
字段名?.协议规定的函数名()
}
}

完成

参考文献

哔哩哔哩——疯狂滴小黑