继承
1、Swift 中的继承只能发生在类上,不能发生在枚举和结构体上。一个类可以继承另一个类的方法、属性、下标等特征,当一个类继承其他类是,继承类叫子类,被继承类叫父类。子类继承父类后,可以重写父类的方法、属性、下标等特征。例如:status:people
备注:一个类只能继承一个父类。多继承可以通过协议实现。
2、重写 一个类继承另外一个类后,子类可以重写(overriding)父类属性和方法。
属性重写可以重写 getter、setter访问器
class Person
{
var name : String
}
class Student : Person{
var school:String
override var name:String
{
get{ return super.name} // super 表示父类
set{ super.name=newValue}
}
}
//或者重写属性观察者
voerride name:String {
willset{ // ....}
didset{//....}
}
3、 重新方法
func GetNameByID()-String{}
voerride func GetNameByID()-String{}
4、final 关键字 :使用final 关键字声明的类 不能被继承,final 声明的 属性、方法和下标 不能被重写。
5、值类型构造器代理:为了减少多个构造器间的代码重复,在定义构造器时,可以通过调用其他构造器来完成实例的部分构造过程,这个过程成为构造代理。其中有分为值类型构造器代理,引用类型构造器代理。
值类型构造器代理 :
class Rectangle{
var width:Int
var heigth:Int
init(width:Int,heigth:Int){self.width=width self.heigth=heigth}
int(legth:Int){ self.init(width:60,heigth:100)} //值类型构造器,self 表示当前本身Init 构造方法
}
引用类型构造器代理 分为:便利构造器、向上代理。
横向代理:类似于值类型构造代理,发生在同一个类内部称为:便利构造器(convenience initializers)
向上代理:发生在继承情况下,在子类构造过程中要先调用父类构造器,初始化父类的存储属性,这种构造器成为制定构造器(designated initializers)
5、操作符
is 操作符可以判断一个实例是否是某个类的类型,结果返回 true、false.
as 转换成目标类型,实例转换 父类实例可以 as 子类 转换,子类不可以转换成 父类类型。 一般as 是强类型转换,因为在 转换时间 person as? student,成果返回转换后类型,不成功返回nil.
any 表示任何类型,包括类和其他数据类型。
anyObject 表示任何类的实例。