国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 潮安县| 耿马| 苍南县| 阜新市| 红原县| 东方市| 射阳县| 福清市| 兴海县| 常熟市| 闽清县| 冀州市| 鄂托克前旗| 上犹县| 奉节县| 邵阳市| 伊春市| 兴和县| 巨野县| 苍山县| 江源县| 元谋县| 广灵县| 株洲市| 阿拉尔市| 台南市| 南召县| 新龙县| 霸州市| 岑溪市| 呼图壁县| 资溪县| 宁国市| 信宜市| 滁州市| 保德县| 城口县| 玉溪市| 全南县| 长葛市| 金寨县|