美文网首页
每天学一点Swift----面向对象上(二)

每天学一点Swift----面向对象上(二)

作者: 冯可乐同学 | 来源:发表于2017-05-24 21:35 被阅读7次

    三.类和结构体

    1. Swift的类和结构体高度相似,无论在定义语法上还是在用法上。

    2.结构体和类的主要区别是:

    (1)结构体不支持继承(自然也就不支持类型转换了)

    (2)结构体不支持定义析构器

    (3)结构体是值类型,而类是引用类型

    3.与Objective-C中定义一个类时需要定义接口部分和实现部分的繁琐方式不同,Swift中定义类,结构体都只要定义一个文件即可,系统将会自动生成面向其他代码的外部接口。

    4.定义结构体和类的语法:

    [修饰符] class类名(或者struct结构体名)

    {

    零到多个构造器...

    零到多个属性...

    零到多个方法...

    零到多个下标...

    }

    5.对于类来说,修饰符可以是:private,internal,public,final。对于结构体来说,修饰符可以是:private,internal,public,但不可能是final,因为结构体不支持继承。

    6.对于类来说,class修饰的成员(类成员)不能访问没有class修饰的成员(实例成员)----相当于java中的static关键字。而Swift中的static则用来修改结构体、枚举中的属性,表示该变量是结构体、枚举的成员。----总结来说就是:如果要实现像Java中的static关键字一样的功能,在Swift的类中用class修饰,在结构体、枚举中用static修饰。

    7.对于Swift中类的以下几点,同Java是相同的:

    (1)属性用于定义类或该类实例所包含的状态数据;

    (2)方法用于定义类或该类实例的行为特征或功能;

    (3)构造器用于构造该类的实例;

    (4)如果没有定义构造器,默认提供了一个无参的构造器,一旦提供类构造器,系统就不会提供无参的构造器了;——跟Java中相同

    (5)Swift通过类名后添加圆括号来表示调用构造器,从而返回类的实例。

    8.对于结构体来说,如果程序没有为结构体提供构造器,系统则会为结构体提供两个构造器:一个无参的构造器,一个初始化了所有存储属性的构造器。

    9.对于类来说,如果程序自定义的构造器和系统提供的构造器同时存在,则不能直接在类中定义构造器,可以通过扩展来为类添加构造器----对于结构体同样适用。

    10. Swift的属性分为两种:存储属性和计算属性,其中存储属性类似于Java中的类成员变量。用于保存类型本身或实例的状态数据,是需要内存来存储的,创建类的实例的同时会被创建;计算属性则类似于Java语言的setter、getter方法合成的property,计算属性底层并一定保存状态数据。

    11.定义存储属性的语法格式为:[修饰符] var|let存储属性名:类型名字[=初始值]

    12.定义构造器的语法:

    [修饰符] init (形参列表)

    {

    零到多条执行语句。。。

    }

    不像Java中,构造器的名字是类名,Swift中的构造器总是init。并构造器不能声明返回值类型。举个栗子:

    class Person

    {

    //下面定义了两个存储属性

    var name : String = ""

    var age : Int = 0

    //下面定义了一个方法

    func say(content : String)

    {

    print(content)

    }

    }

    13.定义一个Person类型的变量:var p : Person

    14.实例化:p = Person()//调用了系统提供的无参的构造器----不像java,这里不用new关键字

    15.使用实例:p.name = "小明"

    p.say("第一次使用Person类")

    16.对于结构体,跟类很相似,举个栗子:

    struct Dog

    {

    var name : String;

    var age : Int

    func run()

    {

    print("\(name) is running quckly")

    }

    }

    var dog = Dog(name : "旺财", age : 4)

    dog.run();

    可见,结构体的实例化和调用方法和类很像。

    相关文章

      网友评论

          本文标题:每天学一点Swift----面向对象上(二)

          本文链接:https://www.haomeiwen.com/subject/tcaoxxtx.html