Extension

/*

Extensions提供了一个接口,在不改变即有类型的前提下添加自己的东西。

比如系统的类型Int我们是不能随便修改的,但是可以通过extension来扩展


1.添加computed properties和静态的computed static properties

2.定义实例方法和type methods 注意:不能override既存的函数

3.提供新的init

4.定义subscripts

5.定义和使用新的nested type

6.提供protocol遵循

如果某个类已经实现了某协议的所有规定,但是没有显示的继承,则可以extension class:protocol {}来声明.

可以看到swift自带的string实现中,右很多类似的使用方法。

从上面介绍可以看出,不能定义新的stored属性。


7.扩展一旦定义,所有的实例都会有效,即使实例的定义在扩展定义之前

*/


// 添加计算属性,扩展Int功能,强大啊

extension Int

{

   var square:Int

    {

        return self * self

    }

}


println(3.square//给整形Int添加的新属性,太强大了!!!


// 扩展init

//注意只能扩展类中的convenienceinit,而structinit则没有限制

class base

{

   var mem:Int

   init(b:Int)

    {

       self.mem = b

    }

}


extension base

{

    /* 报错,不能扩展指定init

    init(b:Int, b2:Int)

    {

        self.mem = b + b2

    }

    */

    // ERROR 只能扩展 computed 属性

    //var newmem:Int

    

    convenience init()

    {

       self.init(b:3)

       mem = 4

    }

}


var extensionVar =base() //使用扩展的便利构造器来创建对象


//《完》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值