亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

詳解Swift面向對象編程中的方法(method)

2020-03-09 17:48:17
字體:
來源:轉載
供稿:網友
struct Point {  var x:Double  var y:Double  mutating func move(x:Double,y:Double) {    self = Point(x: self.x+x,y: self.y+y)  }  static func name(){    print("Point")  }}Point.name()

一、引言

方法只是一個術語,其實就是將函數與特定的類型結合,類、結構體、枚舉都可以定義方法,方法又分為實例方法和類型方法,類型方法類似于Objective-C中的類方法。Swift和Objective-C的一大不同是,Objective-C只有在類中可以定義方法。

二、實例方法基礎

實例方法的語法和函數完全一致,其和具體類型的實例所關聯,實例方法在調用時由類型的實例點語法進行調用來完成一些功能模塊。示例如下:

class Math {  //完成加法功能的實例方法  func add(param1:Double,param2:Double)->Double{    return param1+param2  }}//創建類型實例var obj = Math()//調用方法進行計算obj.add(5, param2: 5)

與Objective-C類似,Swift中每一個類的實例中都隱藏含有一個self屬性,self屬性就是實例本身,開發者可以在實例方法中使用self來調用屬性或者其他實例方法,示例如下:

class Math {  //完成加法功能的實例方法  func add(param1:Double,param2:Double)->Double{    return param1+param2  }  func mul(param1:Double,param2:Double) -> Double {    //使用self調用實例方法    self.add(param1, param2: param2)    return param1*param2  }}

然而,Swift并不要求開發者必須寫self,默認情況下,開發者可以直接省略self來調用屬性和方法:

class Math {  //完成加法功能的實例方法  func add(param1:Double,param2:Double)->Double{    return param1+param2  }  func mul(param1:Double,param2:Double) -> Double {    //使用self調用實例方法    add(param1, param2: param2)    return param1*param2  }}

有一種情況需要注意,對于屬性的調用,如果方法中的參數名和類實例的屬性名相同,則必須使用self來調用類的實例屬性,防止歧義的產生:

class Math {  var param1 = 10.0  //完成加法功能的實例方法  func add(param1:Double,param2:Double)->Double{    //這里將使用param1=10,如果不加self 將使用參數中的param1    return self.param1+param2  }  func mul(param1:Double,param2:Double) -> Double {    //使用self調用實例方法    add(param1, param2: param2)    return param1*param2  }}

三、在實例方法中修改值類型的值

首先需要清楚一個概念,Swift中有兩種類型,值類型和引用類型,具體在類、結構體、枚舉一節中有相關介紹,這里需要注意的是,對于值類型,即結構體和枚舉,其并不能直接在實例方法中修改實例屬性的值,Swift中提供了另一種方式,如果真有如此的需求,開發者可以使用mutating關鍵字將實例方法聲明成可變的,實際上,如果在可變的實例方法中修改了值類型屬性的值,是會創建一個新的實例來代替原來的實例的,示例如下:

struct Point {  var x:Double  var y:Double  mutating func move(x:Double,y:Double) {    self.x+=x    self.y+=y  }}var point = Point(x: 1, y: 1)print(point)point.move(3, y: 3)print(point)

在值類型實例的可變方法中修改屬性的值,實際上就是創建了一個新的實例,上面的寫法和下面的寫法原理是一樣的:

struct Point {  var x:Double  var y:Double  mutating func move(x:Double,y:Double) {    self = Point(x: self.x+x,y: self.y+y)  }}

四、類型方法

正如實例方法是通過類型的實例來進行調用的,類型方法是通過類型直接來調用的,相比于實例方法,類型方法中的self指當前類型,同樣開發者可以使用self來區別類型屬性和類型方法中的參數。使用Static關鍵字來進行類型方法的創建:

如果是在類中創建類型方法,若此方法可以被子類進行重寫,則應該使用class關鍵字來創建,示例如下:

class Math {  var param1 = 10.0  //完成加法功能的實例方法  func add(param1:Double,param2:Double)->Double{    //這里將使用param1=10,如果不加self 將使用參數中的param1    return self.param1+param2  }  func mul(param1:Double,param2:Double) -> Double {    //使用self調用實例方法    add(param1, param2: param2)    return param1*param2  }  class func name(){    print("Math")  }}Math.name()

 


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲va欧美va在线观看| 久久久精品国产一区二区| 亚洲欧美另类自拍| 国产激情久久久久| 欧美大片欧美激情性色a∨久久| 日本精品视频在线| 日韩电影在线观看永久视频免费网站| 黑人狂躁日本妞一区二区三区| 成人激情免费在线| 国产一区二区三区丝袜| 欧美日韩第一页| 日韩免费中文字幕| 久久久成人精品| 成人精品视频在线| 欧美激情视频网址| 亚洲国模精品私拍| 成人亲热视频网站| 在线看日韩av| 成人黄色网免费| 亚洲午夜精品视频| 日本三级久久久| 国外成人性视频| 1769国内精品视频在线播放| 欧美日韩xxxxx| 在线电影中文日韩| 欧美日韩免费观看中文| 97在线视频国产| 国产精品久久久久久久app| 欧美黑人极品猛少妇色xxxxx| 欧美一级成年大片在线观看| 亚洲人成网站999久久久综合| 精品久久久久久久久久ntr影视| 69av在线视频| 成人黄色激情网| 国产成人福利夜色影视| 亚洲成人精品av| 国产一区私人高清影院| 欧美电影免费观看电视剧大全| 久久免费在线观看| 国产精品白嫩初高中害羞小美女| 中文字幕日韩综合av| 日韩暖暖在线视频| 成人自拍性视频| 亚洲精品白浆高清久久久久久| 性色av香蕉一区二区| 国产视频自拍一区| 国产精品视频免费在线| 日韩免费中文字幕| 日韩高清av一区二区三区| 欧美激情国产日韩精品一区18| 中文字幕亚洲一区二区三区| 在线观看国产成人av片| 国产精品久久久久久久久久| 在线日韩欧美视频| 美女扒开尿口让男人操亚洲视频网站| 国产精品高清免费在线观看| 精品国产乱码久久久久久天美| 岛国视频午夜一区免费在线观看| 精品久久久久久中文字幕一区奶水| 欧美日韩亚洲91| 美日韩精品免费观看视频| 色婷婷综合久久久久| 国产91在线播放九色快色| 亚洲成人中文字幕| 国产中文字幕日韩| 国产精品免费福利| 亚洲第一国产精品| 国产精品丝袜久久久久久高清| 97视频在线免费观看| 日韩欧美主播在线| 欧美日韩国产一区在线| 欧美在线视频在线播放完整版免费观看| 欧美精品第一页在线播放| 欧美成年人视频网站欧美| 亚洲国产精品yw在线观看| 国产精品久久久久久一区二区| 色偷偷av一区二区三区乱| 91高清免费在线观看| 亚洲影院色无极综合| 国产视频福利一区| 欧美日韩aaaa| 97超碰国产精品女人人人爽| 国产午夜精品全部视频播放| 欧美另类暴力丝袜| 亚洲欧洲一区二区三区久久| 91精品久久久久久久久久另类| 正在播放欧美一区| 欧美另类精品xxxx孕妇| 亚洲成人激情图| 久久久久久12| 欧美又大又硬又粗bbbbb| 亚洲字幕一区二区| 久久免费精品日本久久中文字幕| 亚洲欧美日韩在线高清直播| 尤物九九久久国产精品的特点| 久久亚洲春色中文字幕| 日韩av影片在线观看| 亚洲第一网中文字幕| 综合激情国产一区| 91免费看国产| 免费不卡在线观看av| 成人性生交大片免费看视频直播| 91久久在线视频| 欧美一级片免费在线| 97视频人免费观看| 91亚洲国产成人久久精品网站| 久久影视三级福利片| 国产精品成人一区二区| www.亚洲免费视频| 亚洲高清色综合| 欧美高清激情视频| 欧美成年人视频网站| 亚洲精品电影网| 国产精品国产三级国产aⅴ浪潮| 欧美极品少妇xxxxⅹ喷水| 成人女保姆的销魂服务| 97在线视频国产| 日韩三级影视基地| 日韩一区二区三区国产| 国产精品h在线观看| 在线精品高清中文字幕| 国产69精品久久久久9| 欧美乱人伦中文字幕在线| 欧美亚洲一级片| 91在线看www| 欧美日韩人人澡狠狠躁视频| 在线亚洲国产精品网| 欧美性xxxxxx| 国产一区二区欧美日韩| 亚洲天堂色网站| 久久精品视频一| 国产精品丝袜久久久久久不卡| 91久久精品国产91久久| 亚洲国内高清视频| 亚洲欧美日韩直播| 日本精品性网站在线观看| 亚洲天堂成人在线视频| 国自在线精品视频| 日本伊人精品一区二区三区介绍| 欧美一区亚洲一区| 岛国av一区二区在线在线观看| 亚洲深夜福利网站| 日韩免费观看av| 亚洲一区二区三区在线免费观看| 欧美重口另类videos人妖| 久久国产加勒比精品无码| 亚洲欧美中文日韩在线| 日韩欧美在线视频日韩欧美在线视频| 亚洲一级黄色片| 国产精品成人va在线观看| 久久久精品久久久| 一级做a爰片久久毛片美女图片| 国内外成人免费激情在线视频网站| 国产精品久久久久av免费| 亚洲视频专区在线| 日韩经典一区二区三区| 成人黄色av网站| 精品欧美aⅴ在线网站| 午夜欧美不卡精品aaaaa| 国产精品自产拍在线观看| 亚洲自拍偷拍第一页| 亚洲香蕉av在线一区二区三区| 精品久久久免费| 国产成人avxxxxx在线看|