国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

Swift中static和class關(guān)鍵字的深入講解

2020-03-09 17:31:08
字體:
供稿:網(wǎng)友

前言

Swift中表示 “類型范圍作用域” 這一概念有兩個不同的關(guān)鍵字,它們分別是staticclass。這兩個關(guān)鍵字確實都表達了這個意思,但是在其他一些語言,包括Objective-C中,我們并不會特別地區(qū)分類變量/類方法和靜態(tài)變量/靜態(tài)函數(shù)。但是在Swift中,這兩個關(guān)鍵字卻是不能用混的。

static和class

作用:這兩個關(guān)鍵字都是用來說明被修飾的屬性或者方法是類型(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() {}}

總結(jié)

  • static能修飾class/struct/enum的計算屬性、存儲屬性、類型方法;class能修飾類的計算屬性和類方法
  • static修飾的類方法不能繼承;class修飾的類方法可以繼承
  • 在protocol中要使用static

參考

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽中县| 安吉县| 巴马| 海宁市| 广东省| 甘孜县| 高州市| 三门县| 团风县| 台南县| 芮城县| 汨罗市| 昆山市| 曲阜市| 汉阴县| 巴塘县| 岫岩| 吉木乃县| 兴宁市| 莎车县| 天峨县| 山东省| 定安县| 固安县| 吉隆县| 乌什县| 报价| 长治市| 禹州市| 聊城市| 元阳县| 瑞金市| 商都县| 乌苏市| 临泽县| 申扎县| 偃师市| 皋兰县| 宜君县| 武义县| 新密市|