LaneBlog

蝼蚁虽小,也有梦想

PHP Socket服务 | PHP微信开发框架 | 开源博客

初探Swift八 - 类

Clicks: 6046 Date: 2015-01-18 11:55:30 Power By 李轩Lane

swift ios

    

    初探Swift,Swift类,Swift类的实例化,Swift类的操作等是本文的内容。这是一门强类型、完全面相对象的语言。类可以更好的封装、抽象、复用模块和代码,使得代码更加的优雅简洁。

/**

 * 类

 */

//定义一个类

class TV{

    //定义属性

    var price = 1999

    var name = "乐TV"

    //定义方法

    func open()->String{

        return "Success"

    }

    func close()->Bool{

        return true

    }

}

//创建对象,不需要new这个关键字的

var myTV = TV()

//调用类的属性

println(myTV.name)

//调用类的方法

myTV.open()

myTV.close()

//类的对象是值调用还是引用调用。

var myTV2 = myTV

//改变myTV2的价格

myTV2.price = 2000

//打印myTV2的价格,是2000,修改成功

myTV2.price

//打印myTV1的价格,是2000,说明是引用传递的

myTV.price


//可以用“===”来判断使用来自同一个类

myTV === myTV2


//swift是没有指针概念的:因为虽然引用传递用的还是指针,但是swift并没有给我们指针的语法


/**

 * 类的构造函数、析构函数

 */

class People{

    var name:String = "小明"

}

var peopleObj = People()

//结果是小明

peopleObj.name

//增加析构函数后

class People2{

    var name:String = "小明"

    //析构函数,系统特殊函数,不需要加func

    init(name:String){

        self.name = name

    }

    //析构函数,系统特殊函数,不需要加func和()

    deinit {

        name = ""

    }

}

var peopleObj2 = People2(name: "小红")

peopleObj2.name



/**

 * 类的继承

 */

//学生类继承人类类

class Student : People{}

var studentObj = Student()

studentObj.name


class Student2 : People2{

    override init(name:String){

        //父类的构造函数需要手动调用,不会自动执行

        super.init(name: "小红")

        super.name = "hello: \(super.name)"

        self.name = name

    }

    //重写父类的函数需要加关键词override

    

    //重写属性

    override var name:String{

        get{

            return super.name

        }

        set{

            super.name = "hi \(name)"

        }

    }

    

    //不希望被重写,再父类的方法前面加@final。可以加在方法、属性、设置类前面

}

var studentObj2 = Student2(name: "小白")

println(studentObj2.name)

studentObj2.name = "lane"

println(studentObj2.name)

©2014 www.lanecn.com , All rights reserved. Power By Li Xuan.  京ICP备14005030号