学习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)")
}
你如果你不想被这个类被重写,你可以这样,在类定义前面加上finalfinal class Student:Person {
}您如果需要demo,http://download.csdn.net/detail/yan520521/8299227