枚举,结构体和类
1.枚举
枚举能为一组相关值定义一个相同的类型
我们通过enum关键字来声明一个枚举类型
ex:enum Direction {
case east
case west
case south
case north
}
也可以声明在一个case中用逗号隔开
当我们声明一个枚举类型时,就等于我们声明了一个新的swift数据类型,可以像使用Int String那样使用它
ex:var walk:Direction = Direction.north(此处可把类型标注去掉)
walk = .east(用点语法改变值)
*使用switch语句来匹配枚举值
switch walk {
case .east:
print(“正在往东走”)
case .west:
print(“正在往西走”)
case .south:
print(“正在往南走”)
case .north:
print(“正在往北走”)
} ——此时情况是完全考虑的,所以不需要default补充
2.类和结构体
和枚举一样,当我们声明一个类和结构体时,我们就声明了一个新的swift类型
(1)类和结构体的声明(结构体struct,类class)
ex1:用结构体描述分辨率对象:
struct resolution {
var width = 0
var height = 0
}
*声明在类和结构体中的常量或变量我们通常称之为属性
ex2:class player {
var name = “”
var HP = 100
var atk = 30
}
(2)类和结构体的实例化
类和结构体的实例化都通过构造语法实现,构造语法最简单的方式是在类或结构体的类型名称后面跟随一对括号
ex: var resolution = Resolution()
*在声明类和结构体时,命名也用驼峰命名法,但是第一个单词的首字母也要大写
(3) 可以通过点语法对类的属性进行访问和修改
resolution.width = 1920
resolution.height = 1080
3.类和结构体的差异
(1)结构体在声明之后系统会自动生成一个成员逐一构造函数
用于初始化新的结构体实例中每一个成员的属性
ex: let vga = Resolution(width:640,height:480)
而类没有成员逐一构造函数
(2)结构体是值类型
值类型被赋予一个常量变量或传递给一个函数的时候,他的值会被复制
(3)类是引用类型
类被赋予一个常量变量或传递给一个函数的时候,他的值是引用已经存在的实例
(4)类是可以继承的
一个类可以继承另一个类的方法,属性和其他特性
继承类叫做子类,被继承的类叫做父类或超类,不继承于其他类的叫做基类
声明子类时,在名称后加上冒号再写父类名称
*声明在结构体或者类中的函数我们通常称之为方法
4.类的重写
重新声明一个类并继承父类,对其中的方法进行重写
5.类和结构体在实例化时,必须为所有属性设置合适的初始值,我们可以通过构造函数来实现实例的初始化,通常我们也称构造函数为构造器,构造函数会在实例化时被调用
构造函数通过init关键字来实现
*self可以帮助系统分辨自身属性和用户输入
*类和结构体中可以拥有多个构造函数
6. 当结构体或类的属性有默认值时,系统会提供一个默认的构造函数在实例化时让属性等于默认值
|
请发表评论