美文网首页Swift编程 Swift快速入门
Swift学习笔记-结构体和类

Swift学习笔记-结构体和类

作者: 土豆吞噬者 | 来源:发表于2018-10-23 23:38 被阅读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的形式传进来

    相关文章

      网友评论

        本文标题:Swift学习笔记-结构体和类

        本文链接:https://www.haomeiwen.com/subject/wsizzftx.html