105 lines
2.0 KiB
Swift
105 lines
2.0 KiB
Swift
import UIKit
|
||
|
||
// 类的属性有初始值的时候,默认会有一个 init() 的初始化器
|
||
//class Size {
|
||
// var width: Int = 0
|
||
// var height: Int = 0
|
||
//}
|
||
|
||
// 等价于
|
||
//class Size {
|
||
// var width: Int
|
||
// var height: Int
|
||
//
|
||
// init() {
|
||
// width = 0
|
||
// height = 0
|
||
// }
|
||
//}
|
||
|
||
|
||
class Size {
|
||
var width: Int = 0
|
||
var height: Int = 0
|
||
|
||
// 指定初始化器(主要初始化器)
|
||
// 用户指定完初始化器之后,会覆盖掉原来的 init()初始化器
|
||
init(width: Int, height: Int) {
|
||
self.width = width
|
||
self.height = height
|
||
}
|
||
|
||
// 便捷初始化器
|
||
convenience init(width: Int) {
|
||
self.init(width: width, height: 0)
|
||
}
|
||
}
|
||
|
||
var s1 = Size(width: 10, height: 20)
|
||
var s2 = Size(width: 30)
|
||
|
||
|
||
class Person {
|
||
var age: Int
|
||
// 指定初始化器
|
||
init(age: Int) {
|
||
self.age = age
|
||
}
|
||
// 便捷初始化器
|
||
convenience init() {
|
||
self.init(age: 0)
|
||
}
|
||
}
|
||
|
||
class Student: Person {
|
||
var score: Int
|
||
// 指定初始化器调用直系父类的初始化器
|
||
init(age: Int, score: Int) {
|
||
self.score = score
|
||
// super.init 方法放到最后
|
||
super.init(age: age)
|
||
}
|
||
|
||
// 便捷初始化器调用便捷初始化器
|
||
convenience init() {
|
||
self.init(score: 0)
|
||
}
|
||
|
||
// 便捷初始化器调用指定初始化器
|
||
convenience init(score: Int) {
|
||
self.init(age: 0, score: score)
|
||
}
|
||
}
|
||
|
||
|
||
class Animal {
|
||
var legs: Int
|
||
var name: String
|
||
var age: Int
|
||
|
||
init(name: String, age: Int, legs: Int) {
|
||
self.legs = legs
|
||
self.age = age
|
||
self.name = name
|
||
}
|
||
|
||
init(name: String, age: Int) {
|
||
self.legs = 4
|
||
self.age = age
|
||
self.name = name
|
||
}
|
||
|
||
convenience init(name: String) {
|
||
self.init(name: name, age: 1, legs: 4)
|
||
}
|
||
}
|
||
|
||
class Cat: Animal {
|
||
|
||
}
|
||
|
||
var cat = Cat(name: "淘气", age: 3, legs: 4)
|
||
var cat1 = Cat(name: "淘气", age: 3)
|
||
var cat2 = Cat(name: "淘气")
|
||
|