继承

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 表示任何类的实例。

 

posted @ 2015-04-15 18:12  碧水晴天  阅读(129)  评论(0编辑  收藏  举报