上几篇 Swift中的属性、熟练使用Swift中的区间、Swift枚举
一、方法
![](https://img.haomeiwen.com/i2655527/858d7c96d413e96d.png)
Swift方法.png
/* 类中的方法
1.实例方法调用:从实例前8字节找到类型信息 -》从类型信息中找到方法地址调用 -》类型信息通过汇编查看地址发现位于全局区。
2.subscrip类似实例方法、计算属性,本质是方法.
3.static\class修饰的方法是类型方法,使用类型调用;也能修饰subscript方法
4.重写的方法使用override修饰
*/
class ZLFunction {
var grade1: ScoreGrade?
var grade2: ScoreGrade?
// 1.实例方法,子类可以重写
func isPass() -> Bool { return true }
// static修饰的类型方法子类不能重写
static func staticFunc() {}
// class修饰的类型方法子类可以重写
class func classFunc() {}
// 下标方法:(static\class也可以用来修饰subscript方法,调用时使用类型调用)
// 1.实例通过中括号进行赋值、取值。可以只有get方法
subscript (index: Int) -> String {
set {
if index == 0 {
grade1 = (newValue == "A") ? .A : .E
} else {
grade2 = (newValue == "A") ? .A : .E
}
}
get {
if index == 0 {
return (grade1 == .A) ? "A" : "E"
} else {
return (grade2 == .A) ? "A" : "E"
}
}
}
// 2.下标方法可以有多个参数,调用时如:instance[param1, param2]
subscript (index: Int, index2: Int) -> String {
//...
}
// 3.下标方法可以设置标签,调用时如:instance[label:param1, param2]
subscript (label index: Int, index2: Int) -> String {
//...
}
}
/* 值类型中的方法(枚举、结构体)
1.枚举、结构体中方法如果修改自身需要用`mutating`修饰
2.值类型的类型方法用static修饰
3.值类型的方法调用时,是直接调用方法地址
*/
enum ScoreGrade: Int {
case A, B, C, D, E
// 1.值类型中的方法如果要修改自身内存,方法需要加mutating修饰
mutating func modifyToLevel() {
self = ScoreGrade.A
}
// 2.类型方法,通过类型调用
static func test() { }
// 3.枚举中的类型下标方法(加了static是类型下标,用类型调用)
/*static*/ subscript (index: Int, index2: Int) -> String {
set {}
get {
return "ScoreGrade"
}
}
}
二、类的继承
![](https://img.haomeiwen.com/i2655527/ffc1cdb517ba06ae.png)
Swift类的继承.png
网友评论