标签:
父类
class Parent { var p1: String { get{ return "dasf" } set { } } var p2: Int = 5 func m() { print("parent m") } final func n(){ } //不能被子类继承 }
子类,方法的重写
class Child: Parent { //如果要重写父类的存储属性 //1.重写后可以给它加观察者(新功能) //2.可以把其改为计算属性 (但是不能减少其功能) //3.父类的只读(只有get,或者let),子类不能添加观察者 // override var p1: String = "afa" override var p1: String { willSet { } } // override var p1: String { // // } // override var p1: String { // // get { // return "dasdf" // } // set { // // } // // } override func m() { print("child m") } }
怎么创建一个Child()类型
let instance:Parent = Child()
instance.m()
//
//这种情况只添加memberwise init
struct Point { var x: Int var y: Int } let p = Point(x: 5, y: 6)
//这种自动添加memberwise 和默认
struct Point2 { var x: Int = 1 var y: Int = 2 }
这种不会添加
struct Point3 { var x: Int = 1 var y: Int = 2 init(xx: Int) { self.init(xx:xx,yy:1) } init(yy: Int) { // x = 1 // y = yy self.init(xx:1,yy: yy) //self是不能省略的 }
//写一个很全的构造函数,可以初始化所有的成员
init(xx: Int ,yy: Int){
x = xx
y = yy
}
}
有3种调用的方法
let p3 = Point3(xx: 1)
let p3 = Point3(yy: 1)
let p3 = Point3(xx: 1,yy: 2)
标签:
原文地址:http://www.cnblogs.com/kangniuniu/p/4951125.html