swift的类的基本操作

学习swift已有了一段时间,以前一直都在忙项目,今天有时间就写了个小demo,写了一下类的基本操作

1、首先是定义一个类,这点和java差不多

     class Person: NSObject {

     }

2、接下来是定义属性

var name:String//存储属性

var gender:Bool

let country:String ="China"//默认值,再有默认值的情况下可以不进行初始化,常量不能在进行赋值

这是一个属性检测器,在给属性赋值的时候会调用它,但是默认值和初始化的不调用它

var age:Int{

        willSet{//属性检测器

            println("\(newValue)")

        }

        didSet{

            println("\(oldValue)")

        }

    }

这是一个计算属性,写计算属性的时候要注意,不要发生死循环,get里不能返回自身,因为返回自身的时候还会调用get,set方法也一样

var day:Int{//计算属性

        get{

//           return self.day  //死循环

          return self.age *360

        }

        set{

           self.age = newValue

//            self.day = newValue  //死循环

        }

    }

而且还要注意set,get方法和属性检测器不能同时存在

var month:Int{//只读计算属性可以简写如下

        return self.age *12

    }

这是lazy属性,只有在用到这个属性的时候才会加载,在初始化这个类的时候并不会加载这个属性

lazy var height:Float = {//lazy属性,用到时才加载

        return 175

    }()

lazy var width = 80

3、类属性

在这里没想明白类属性的意义,好像只能返回一个常量,不能赋值,肯能我不知道改怎么用,如果有大神知道,望告知

class var className:String{//类属性

        return "Person"

    }

4、附属脚本

subscript (index:Int)->Int{//附属脚本 

        return 20 * index

    }

subscript (name:String)->String{//也可以写字符串

        return self.name + name

    }

person1[2] //这里的值就是40,我感觉这里好像就是在执行一个公式一样,据说字典就是用的着这种方式

5、对象方法

方法和函数的格式基本一样,区别在于如果有多个参数,除了第一个参数,方法都有默认的外部参数名

func descripyion(){

        self.age = 60;

        println("  ")

    }

6、类方法

 class func personDescription(){//类方法

          println("\(Person.className)")

    }

7、构造器

1)遍历构造器

把所有没有默认值的参数都府城初始值,有默认值的也可以写

 init(name:String,age:Int,gender:Bool,country:String) {

        self.name = name

        self.age = age

        self.gender = gender

        self.country = country

    }

2)指定构造器

需要用 convenience 修饰

convenience init(country:String) {//指定构造器

        self.init(name:"JIM",age:26,gender:true,country:country)//必须先调用遍历构造器才能给做其他的初始化

        self.name = country

    }

8、继承

class Student: Person {

}

如果要重写父类的方法要用override 修饰,继承附属脚本也一样

override func descripyion(){

        self.age = 60;

        println("  ")

    }

但是你如果这个方法不详被子类重写 可在方法的前面加上final

这句就是重写父类的类方法personDescription()但是又不让子类重写

final override class func personDescription(){//类方法

        println("\(Person.className)")

    }

你如果你不想被这个类被重写,你可以这样,在类定义前面加上final

final class Student:Person {

}

您如果需要demo,http://download.csdn.net/detail/yan520521/8299227




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值