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

2018-04-10  本文已影响0人  温柔vs先生
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)
上一篇 下一篇

猜你喜欢

热点阅读