Swift之关键字使用(I)

static和class的使用

static 使用

在非class的类型(包括enum和struct)中,一般使用static来描述类型作用域。在这个类型中,我们可以在类型范围中声明并使用存储属性,计算属性和方法。

 1 //other
 2 struct Point {
 3     let x: Double
 4     let y: Double
 5     // 存储属性
 6     static let zero = Point(x: 0, y: 0)
 7     // 计算属性
 8     static var ones: [Point] {
 9         return [Point(x: 1, y: 1),
10                 Point(x: -1, y: 1),
11                 Point(x: 1, y: -1),
12                 Point(x: -1, y: -1)]
13     }
14     // 类方法
15     static func add(p1: Point, p2: Point) -> Point {
16         return Point(x: p1.x + p2.x, y: p1.y + p2.y)
17     }
18 } ```
19 > 注意: class修饰的类中不能使用class来存储属性的

class 使用

1  // other
2  class MyClass {
3  class var bar: Bar?
4  }

但是在使用protocol时,要注意会报一种错误,如:"class variables not yet supported"

//other
有一个比较特殊的是protocol,在Swift中class、struct和enum都是可以实现protocol的,那么如果我们想在protocol里定义一个类型域上的方法或者计算属性的话,应该用哪个关键字呢?答案是使用class进行定义,但是在实现时还是按照上面的规则:在class里使用class关键字,而在struct或enum中仍然使用static——虽然在protocol中定义时使用的是class.

 1 //other
 2 protocol MyProtocol {
 3     static func foo() -> String
 4 }
 5 struct MyStruct: MyProtocol {
 6     static func foo() -> String {
 7         return "MyStruct"
 8     }
 9 }
10 enum MyEnum: MyProtocol {
11     static func foo() -> String {
12         return "MyEnum"
13     }
14 }
15 class MyClass: MyProtocol {
16     class func foo() -> String {
17         return "MyClass"
18     }
19 }

Private、FilePrivate、Public、open

四大属性的使用范围图:

private 修饰符

  • 只允许在当前类中调用,不包括 Extension
  • private 现在变为了真正的私有访问控制
  • 用 private 修饰的方法不可以被代码域之外的地方访问

fileprivate 修饰符

  • fileprivate 其实就是过去的 private。
  • 其修饰的属性或者方法只能在当前的 Swift 源文件里可以访问。
  • 即在同一个文件中,所有的 fileprivate 方法属性都是可以访问到的。
 1 class A {
 2     fileprivate func test(){
 3         print("this is fileprivate func!")
 4     }
 5 }
 6
 7 class B:A {
 8     func show(){
 9         test()
10     }
11 }

public 修饰符

  • 修饰的属性或者方法可以在其他作用域被访问
  • 但不能在重载 override 中被访问
  • 也不能在继承方法中的 Extension 中被访问

open 修饰符

  open 其实就是过去的 public,过去 public 有两个作用:

  • 修饰的属性或者方法可以在其他作用域被访问
  • 修饰的属性或者方法可以在其他作用域被继承或重载 override

原文地址:https://www.cnblogs.com/EchoHG/p/9095216.html

时间: 2024-11-13 08:07:23

Swift之关键字使用(I)的相关文章

swift dynamic关键字

dynamic Apply this modifier to any member of a class that can be represented by Objective-C. When you mark a member declaration with the dynamic modifier, access to that member is always dynamically dispatched using the Objective-C runtime. Access to

Swift的关键字

在声明中使用关键字 let   :声明一个常量 var :声明一个变量 class :声明一个类 static :静态的 deinit :反初始化方法?析构方法 init :构造方法?初始化方法 enum :枚举 extension :扩展---给对象增加方法 func :声明一个函数 import :导入头文件 internal :内部的 private :私有的 public :公开的 operator :自定义运算符 protocol :协议 struct :结构体 subscript :

Swift - guard关键字(守护)

guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会有一个代码块,不像if语句可以if else多个代码块. 那么guard语句的作用到底是什么呢?顾名思义,就是守护.guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句,我们举例来看看. 我们以今年高考为例,在进入考场时一般都会检查身份证和准考证,我们写这样一个方法: func checkup(per

Swift—final关键字-b

在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: [html] view plain copy print? final class Person { //声明为final,说明它是不能被继承的 var name: String final var age: Int    //定义的age属性 final func description() -> String {  //定义descripti

Swift 特殊关键字

#available()函数来检查API函数的可用性 // 判断当前版本是否 iOS8.0+,OSX10.10+以及以其他平台 if #available(iOS 8.0, OSX 10.10, *) { // 当版本匹配时 } else { //当版本不匹配时 } 也可以放在方法前面, 使其方法在某个版本可用 // iOS8.0+,OSX10.10+以及以其他平台可用 @available(iOS 8.0, OSX 10.10, *) func startUserActivity() -> N

Swift标识符和关键字

任何一种计算机语言都离不开标识符和关键字,下面我们将详细介绍Swift标识符和关键字. 标示符 标识符就是给变量.常量.方法.函数.枚举.结构体.类.协议等指定的名字.构成标识符的字母均有一定的规范,Swift语言中标识符的命名规则如下: 区分大小写,Myname与myname是两个不同的标识符: 标识符首字符可以以下划线(_)或者字母开始,但不能是数字: 标识符中其他字符可以是下划线(_).字母或数字. 例如,identifier.userName.User_Name._sys_val.身高等

Swift 2.0学习笔记(Day5)——我所知道的标识符和关键字

Swift 2.0学习笔记(Day5)--我所知道的标识符和关键字   原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整理一下Swift中的标识符和关键字. 什么是标识符呢? 标识符就是给变量.常量.方法.函数.枚举.结构体.类.协议等由开发人员指定的名字. 其实,构成标识符的字母是有一定规范的,Swift中命名规则是: 区分大小写,Myname与myname是两个不同的标识符: 标识符首字符可以以下划线(_)或者字

swift 2中关键字和解释整理

1.swift 最新关键字和符号参考:https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/doc/uid/TP40014097-CH30-ID410 2.部分关键字解释参考:http://www.cnblogs.com/iCocos/p/4631634.html 3.其他关键字如: 用于

《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字

原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整理一下Swift中的标识符和关键字.   什么是标识符呢? 标识符就是给变量.常量.方法.函数.枚举.结构体.类.协议等由开发人员指定的名字. 其实,构成标识符的字母是有一定规范的,Swift中命名规则是: 区分大小写,Myname与myname是两个不同的标识符: 标识符首字符可以以下划线(_)或者字母开始,但不能是数字: 标识符中其他字符可以是下划线(_).字母或数