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
}
}
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
}
}
相关文章推荐
- 苹果新贵 Swift 之前世今生
- Swift中获取字符串子串
- 【译】利用UIWebView打造一个炫酷的视频背景视图(OC & Swift)
- Swift(十二、方法&下标脚本)
- swift-自动计算字符串的宽高
- Swift
- 用Swift重写公司OC项目(Day2--swift如何调用OC类库,swift开发之百度地图的集成以及如何关闭ATS)
- swift优秀学习博客
- Swift主题色顶级解决方案一
- 如何用 Swift 语言构建一个自定控件
- 《从零开始学Swift》学习笔记(Day 32)——计算属性
- 《从零开始学Swift》学习笔记(Day 32)——计算属性
- 用Swift重写公司OC项目(Day2)--创建OC与Swift的桥接文件,进而调用OC类库
- swift 异步线程用法
- swift2.0 - study
- swift 赋值判断
- swift学习03_2
- swift学习Day03
- 3.Swift的常量与变量
- swift 快速奔跑的兔几 本节的内容是:SpriteKit第一讲