• 贵州省社科规划办与贵州日报社合作推出“文化贵州”专栏 2019-03-20
  • 就算不为了世界杯,俄罗斯也有那么多时髦好去处值得你飞去 2019-03-20
  • 福彩3d开奖结果走势图:Swift中static和class关键字的深入讲解

    山西体彩11选5直选遗漏 www.caxru.com  更新时间:2019年03月11日 08:59:56   作者:godiscoder   我要评论

    这篇文章主要给大家介绍了关于Swift中static和class关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    前言

    Swift中表示 “类型范围作用域” 这一概念有两个不同的关键字,它们分别是static和class。这两个关键字确实都表达了这个意思,但是在其他一些语言,包括Objective-C中,我们并不会特别地区分类变量/类方法和静态变量/静态函数。但是在Swift中,这两个关键字却是不能用混的。

    static和class

    作用:这两个关键字都是用来说明被修饰的属性或者方法是类型(class/struct/enum)的,而不是类型实例的。

    static 适用的场景(class/struct/enum)

    • 修饰存储属性
    • 修饰计算属性
    • 修饰类型方法
    struct Point {
     let x: Double
     let y: Double
    // 修饰存储属性
     static let zero = Point(x: 0, y: 0)
    // 修饰计算属性
     static var ones: [Point] {
      return [Point(x: 1, y: 1)]
     }
    // 修饰类型方法
     static func add(p1: Point, p2: Point) -> Point {
      return Point(x: p1.x + p2.x, y: p1.y + p2.y)
     }
    }

    class 适用的场景

    • 修饰类方法
    • 修饰计算属性
    class MyClass {
    // 修饰计算属性
     class var age: Int {
      return 10
     }
    // 修饰类方法
     class func testFunc() {
      
     }
    }

    注意事项

    class不能修饰类的存储属性,static可以修饰类的存储属性

    //class let name = "jack" error: Class stored properties not supported in classes; did you mean 'static'?

    在protocol中使用static来修饰类型域上的方法或者计算属性,因为struct、enum、class都支持static,而struct和enum不支持class

    protocol MyProtocol {
     static func testFunc()
    }
    
    struct MyStruct: MyProtocol {
     static func testFunc() {
      
     }
    }
    
    enum MyEnum: MyProtocol {
     static func testFunc() {
      
     }
    }
    
    class MyClass: MyProtocol {
     static func testFunc() {
      
     }
    }

    static修饰的类方法不能继承;class修饰的类方法可以继承

    class MyClass {
     class func testFunc() {
      
     }
     
     static func testFunc1() {
      
     }
    }
    
    class MySubClass: MyClass {
     override class func testFunc() {
      
     }
     
    // error: Cannot override static method
    // override static func testFunc1() {
    //
    // }
    }

    单例

    class SingleClass {
     static let shared = SingleClass()
     private init() {}
    }

    总结

    • static能修饰class/struct/enum的计算属性、存储属性、类型方法;class能修饰类的计算属性和类方法
    • static修饰的类方法不能继承;class修饰的类方法可以继承
    • 在protocol中要使用static

    参考

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    相关文章

    • Swift教程之基础数据类型详解

      Swift教程之基础数据类型详解

      这篇文章主要介绍了Swift教程之基础数据类型详解,本文详细讲解了Swift中的基本数据类型和基本语法,例如常量和变量、注释、分号、整数、数值类型转换等内容,需要的朋友可以参考下
      2015-01-01
    • 详解Swift语言的while循环结构

      详解Swift语言的while循环结构

      这篇文章主要介绍了Swift语言的while循环结构,包括do...while循环的用法,需要的朋友可以参考下
      2015-11-11
    • Swift心得笔记之字符串

      Swift心得笔记之字符串

      Swift 的 String 类型是值类型 。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。
      2015-04-04
    • Swift编程中的switch...case语句实例解析

      Swift编程中的switch...case语句实例解析

      这篇文章主要介绍了Swift编程中的switch...case语句实例解析,其中重点还是对于fallthrough关键字用法的讲解,需要的朋友可以参考下
      2016-04-04
    • Swift能代替Objective-C吗?

      Swift能代替Objective-C吗?

      这是我在网上上看到的答案,复制粘贴过来和大家分享一下,因为我和很多人一样很关心Swift的出现对Mac开发的影响和对Objective-C的影响。
      2014-09-09
    • swift4 使用DrawerController实现侧滑菜单功能的示例代码

      swift4 使用DrawerController实现侧滑菜单功能的示例代码

      这篇文章主要介绍了swift4 使用DrawerController实现侧滑功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-06-06
    • 用Swift编写自动录音器

      用Swift编写自动录音器

      这篇文章主要介绍了用Swift编写自动录音器,有需要的朋友可以借鉴下
      2015-07-07
    • Swift之UITabBarController 导航控制器的自定义

      Swift之UITabBarController 导航控制器的自定义

      本文给大家介绍swift导航控制器之UITabBarController,本文通过代码实例给大家讲解swift导航控制器,导航控制器类继承UITabBarController,代码简单易懂,需要的朋友可以参考下
      2015-10-10
    • Swift中用到extension的一些基本的扩展功能讲解

      Swift中用到extension的一些基本的扩展功能讲解

      这篇文章主要介绍了Swift的一些基本的扩展功能,即extension关键字的使用,需要的朋友可以参考下
      2015-11-11
    • Swift 3.0基础学习之下标

      Swift 3.0基础学习之下标

      这篇文章主要介绍了Swift 3.0基础学习之下标的相关资料,文中介绍的非常详细,对大家学习或者使用swift具有一定的参考价值,需要的朋友下面来一起看看吧。
      2017-03-03

    最新评论

  • 贵州省社科规划办与贵州日报社合作推出“文化贵州”专栏 2019-03-20
  • 就算不为了世界杯,俄罗斯也有那么多时髦好去处值得你飞去 2019-03-20