您的位置:首页 > 移动开发 > Swift

Swift的继承和结构体的初始化

2015-11-06 19:06 274 查看
/*

Swift的继承

如果要重写父类的存储属性

1.重写后可以给它加属性观察器。列一:

2.可以把其改为计算属性(但不可减少父类属性原本的功能)。列二:

3.父类的只读(只有get,或者let),子类不能添加属性观察器。列三:

如果重写父类的计算属性

1.父类计算属性只有只读,子类重写后可以给其加上seter方法。列四:

方法继承。列五:

*/

//列一:

class Person {

var name: String = "cj"

}

class Child:Person {

override var name: String {

willSet {

}

didSet {

}

}

// override var name:string = "cj" 错误

}

//列二:

class Person2 {

var name: String = "cj"

}

class Child2:Person2 {

override var name: String {

get {

return "chenhe"

}

set {

}

}

}

//列三:

class Person3 {

var name: String {

return "chenhe"

}

let height: Int = 12

}

class Child3:Person3 {

// override var name: String {

// willSet {

//

// }

// didSet {

//

// }

// }

// override let height: Int {

// willSet {

//

// }

// didSet {

//

// }

// }

}

//列四:

class Person4 {

var name: String {

return "chenhe"

}

}

class Child4:Person4 {

override var name: String {

get {

return "chenhe"

}

set {

}

}

}

//列五:

class Person5 {

var name: String {

return "chenhe"

}

func x() {

print("你好")

}

}

class Child5:Person5 {

override func x() {

print("你们好")

}

}

//运行时多态

let a: Person5 = Child5()

a.x()

//初始化干两件事,分配空间,成员赋值

//结构体的初始化方法

struct Point {

var x: Int

var y: Int

}

//let p = Point 违背了初始化话原则,没有给成员赋值。下面这个就可以了列一:

let p = Point(x: 1, y: 2)

struct Point2 {

var x: Int = 4

var y: Int = 3

}

let p2 = Point2()//这样不会报错,分配了空间又给成员赋值了

struct Point3 {

var x: Int

var y: Int

//写一个很全的构造函数,可以初始化所有的成员

init(xx: Int,yy: Int) {

x = xx

y = yy

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: