美文网首页
swift 学习:second(类与结构体)

swift 学习:second(类与结构体)

作者: 温柔vs先生 | 来源:发表于2018-04-10 10:09 被阅读0次
    • 一个类必须给具体的值才能起作用,这叫初始化或实例化。
    • 构造器:一个类的初始化方法。 属性:一个类的"特征"。方法:一个类的“行为”。
    class Duck {
        var color : String
        var foot : Int
        
        init(color: String, foot: Int) {
            self.color = color
            self.foot = foot
        }
        
        func growUp(color: String)  {
            self.color = color
        }
    }
    

    声明了一个Duck的类,类里面有两个属性color,foot,下面是初始化方法(有初始化方法的话)我们可以通过初始化方法来生成一个实例对象。在下面是类中的一个方法

    生成了一只鸭,叫初始化。duck1是一个实例。

    let duck1 = Duck(color: "yellow", foot: 2)
    duck1.growUp(color: "white")
    

    如果给属性值,会生成一个默认的构造器init(),初始化时不能更改属性值

    class DuckGreen {
        var color = "Green"
        var foot = 2
    }
    let duck2 = DuckGreen()
    

    这里我们看到声明了 一个DuckGreen类,定义了两个属性,但是我们直接给属性赋值,这样就默认生成了一个初始化方法,但是不能调用初始化方法,不能通过初始化方法更改属性的值。


    image.png

    结构体只需声明属性,构造器系统自动生成!

    struct DuckRed {
        var color = "Red"
        var foot = 2
    }
    let duck3 = DuckRed()
    let duck4 = DuckRed(color: "Deep Red", foot: 2)
    

    类可以被继承,子类可以修改父类中的属性和方法。结构体和枚举不能继承。

    class Duck {
        var color : String
        var foot : Int
        
        init(color: String, foot: Int) {
            self.color = color
            self.foot = foot
        }
        
        func growUp(color: String)  {
            self.color = color
        }
    }
    
    //鸳鸯继承了鸭子的所有属性和方法
    class MandarinDuck: Duck {
        //增加了属性
        var lovers = 0
        var name = "鸳鸯"
    
        //可以更改父类中的方法
        override func growUp(color: String) {
            //调用父类的方法
            super.growUp(color: color)
            self.lovers = 1
            print("鸳鸯长大了!有了\(self.lovers)个伴侣!")
        }
        
        //计算属性:由其他属性间接得出(set),也可以影响其他属性(set)。
        var desc : String {
            get {
                return "\(self.name)是一种中国特有的鸭子种类,一生只有钟情于一个伴侣。"
            }
        }
    }
    
    let duck1 = MandarinDuck(color: "gray", foot: 2)
    duck1.growUp(color: "Rainbow")
    print(duck1.desc)
    

    相关文章

      网友评论

          本文标题:swift 学习:second(类与结构体)

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