Swift编程 Swift快速入门

Swift学习笔记-结构体和类

2018-10-23  本文已影响1人  土豆吞噬者

结构体

结构体由属性和方法构成,其中属性可以是变量或者常量,可以在定义的时候给出属性的默认值

struct Worker{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
}

和枚举类型一样,结构体也是值类型,所以修改属性的方法也要标记为mutating

struct Worker{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
    
    func printSelf()
    {
        print("My Height is \(height),My Color is \(color)")
    }
    
    mutating func setColor(newColor:String)
    {
        color=newColor
    }
}

类型方法是类型本身调用的方法,而不是实例调用的方法,可以通过static实现

struct Worker{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
    
    
    static func getNumberOfWorker() -> Int
    {
        return 5
    }
}

创建结构体实例时,可以使用默认值创建,也可以使用自定义的一组值

var worker=Worker()
var worker2=Worker(height:180,color:"red")
worker.printSelf()
worker.setColor(newColor: "black")
worker.printSelf()

类和结构体类似,但是结构体为值类型,类为引用类型,结构体不支持继承,类支持

class Person{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
}
//继承于Person类
class Worker:Person{
    //工龄
    var workYears=10
    
    //工作
    var job="医生"
}

使用override重写父类方法,使用super调用父类方法

class Person{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
    
    func printSelf(){
        print("my height is \(height),my color is \(color)")
    }
}


class Worker:Person{
    //工龄
    var workYears=10
    
    //工作
    var job="医生"
    
    override func printSelf() {
        print("my job is \(job),my workYears is \(workYears)")
        super.printSelf()
    }
}

使用final可以禁止子类重写该方法

class Person{
    //身高
    var height=170
    
    //颜色
    var color="yellow"
    
    final func printSelf(){
        print("my height is \(height),my color is \(color)")
    }
}

在类里,类型方法可以通过标记class实现,如果不想让子类重写可以使用static代替class

class Worker:Person{
    //工龄
    var workYears=10
    
    //工作
    var job="医生"
    
    class func getParentClassName() -> String{
        return "Person"
    }
}

mutating方法的本质

在成员方法中都有一个默认的参数self,在方法中访问或者修改属性时,都是通过self来实现的,由于值类型在传递参数时会被复制,所以值类型方法中修改属性时,修改的其实是值的副本,而mutating的作用是把self以inout的形式传进来

上一篇下一篇

猜你喜欢

热点阅读