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

首頁 > 學院 > 開發設計 > 正文

ASwiftTour(4)-ObjectsandClasses

2019-11-14 20:25:23
字體:
來源:轉載
供稿:網友

Objects and Classes(對象和類)

用 class 關鍵字后面跟一個類名來創建一個class,在一個類中聲明 常亮或變量,他存在于當前類的上下文,函數的方法是同樣的

var numberOfSides = 0    let numberOfSidesLet = 1        func simpleDescription() -> String    {        return "A shape with /(numberOfSides)  /(numberOfSidesLet) sides."    }    

通過括號的方式來創建一個類實例,使用點語法來訪問該實例的屬性和方法

var shape = Shape()shape.numberOfSides=10var str = shape.simpleDescription()PRintln(str)

吐槽一下,不知道是xcode6 bate版本問題還是什么原因,寫代碼的提示功能特別差

這個版本的一個重要的修改:在創建的時候設置初始值的項,使用init來創建,如下:

 1 class Shape { 2      3     var name:String 4      5     init(name:String) 6     { 7         self.name = name 8     } 9     10     var numberOfSides = 011     let numberOfSidesLet = 112     13     14     func simpleDescription() -> String15     {16         return "A shape with /(numberOfSides)  /(numberOfSidesLet) sides."17     }18 }

請注意 self 關鍵字用來區分 屬性name 和 參數 name(這個和oc中的還是一樣)

如果你要釋放一些對象,那么需要創建一個deinitializer,使用deinit來釋放資源

子類和父類之間用 冒號分開,在繼承標準的子類時,不需要聲明,所以可以根據需要來忽略或者包括父類

子類重寫父類的方法要使用overside關鍵字(C#,java比較相似),如果沒有重載,則會提示錯誤

class Square: Shape {       var sideLength: Double        init(sideLength:Double,name:String)    {        self.sideLength = sideLength        super.init(name:name)        numberOfSides = 4    }        func area() -> Double    {        return sideLength * sideLength    }        override func simpleDescription() -> String    {        return "A square with sides of length /(sideLength)"    }} var square = Square(sideLength:10.1,name:"my test") square.area() var str = square.simpleDescription() println(str)

除了簡單的屬性,屬性也可以有getter 和 setter方法

 1 class EquilateralTriangle: Shape { 2     3     var sideLength:Double = 0.0 4      5     init(sideLength:Double,name:String) 6     { 7         self.sideLength = sideLength 8         super.init(name:name) 9         numberOfSides=310     }11     12     var perimeter:Double13     {14         get{15             return 3.0*sideLength16         }17         set18         {19             sideLength = newValue/3.020         }21     }22     23     override func simpleDescription()->String24     {25         return "An equilateral triagle with sides of length /(sideLength)"26     }27 }28  var triangle = EquilateralTriangle(sideLength:3.1,name:"a triangle")29  println(triangle.perimeter)30  triangle.perimeter = 9.931  println(triangle.sideLength)

在perimeter的setter方法中,新值得隱式名稱是newValue,你可以在setter之后提供一個名字

初始化EquilateralTriangle類有三步:

1. 設置屬性的值

2. 調用父類的構造方法(init)

3. 改變父類定義的屬性值,其他的方法也可以在這里設置

如果你不需要計算屬性,但是在setter之前或者之后執行,可以使用willSet和didSet,例如:下面的類永遠保證三角形的邊長等于正方形的邊長

class TriangleAndSquare {       var triangle:EquilateralTriangle    {    willSet    {        square.sideLength = newValue.sideLength    }    }        var square:Square    {     willSet     {        triangle.sideLength = newValue.sideLength    }    }        init(size:Double,name:String)    {        square = Square(sideLength:size,name:name)        triangle = EquilateralTriangle(sideLength:size,name:name)    }}        var triangleAndSquare = TriangleAndSquare(size:10,name:"ray test shape")        println(triangleAndSquare.square.sideLength)        println(triangleAndSquare.triangle.sideLength)        triangleAndSquare.square = Square(sideLength:50,name:"larger square")        println(triangleAndSquare.triangle.sideLength)        println(triangleAndSquare.square.sideLength)//打印出來的值為:10.0,10.0,50.0,50.0

函數和方法有一個不同點,函數的參數名只能在函數中使用,but parameters names in methods are also used when you call the method (except for the first parameter). By default, a method has the same name for its parameters when you call it and within the method itself. You can specify a second name, which is used inside the method(這個不知道怎么翻譯)

 1 class Counter { 2     3     var count:Int = 0 4     func incrementBy(amount:Int,numberOfTimes times:Int) 5     { 6         count += amount*times 7     } 8 } 9  var counter = Counter()10  counter.incrementBy(2,numberOfTimes:7)11         

當使用可選值時,可以像方法屬性一樣在操作符前使用問號(?),如果值本來就是nil,那所有在?之后的代碼將會忽略,整個表達式都是nil,Otherwise, the optional value is unwrapped, and everything after the ? acts on the unwrapped value. In both cases, the value of the whole expression is an optional value.

1  let optionalSquare :Square?=Square(sideLength:2.5,name:"optional square")2  let sideLength = optionalSquare?.sideLength  //注意:等號和optionalSquare之間必須有空格,不知道編譯器為什么會這樣

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品88a∨| 中文精品99久久国产香蕉| 社区色欧美激情 | 国产主播喷水一区二区| 欧美在线一区二区视频| 国产精品美女久久久免费| 日韩在线免费视频观看| 国产精品成人一区二区三区吃奶| 91国内免费在线视频| 日韩午夜在线视频| 国产精品一区=区| 日韩一区二区三区xxxx| 亚洲日本aⅴ片在线观看香蕉| 亚洲精品久久7777777| 美日韩丰满少妇在线观看| 欧美亚洲在线播放| 久久五月天色综合| 国产成人啪精品视频免费网| 国产精品久久久久久久av电影| 亚洲色图日韩av| 成人精品网站在线观看| 亚洲精品日韩在线| 亚洲精品www久久久久久广东| 亚洲性生活视频在线观看| 色偷偷噜噜噜亚洲男人| 国产极品jizzhd欧美| 精品国产拍在线观看| 国产三级精品网站| 日韩女在线观看| 亚洲免费一在线| 亚洲理论片在线观看| 伊人一区二区三区久久精品| 成人在线国产精品| 久久精品国产一区二区电影| 国产精品久久久久久久9999| 亚洲精品之草原avav久久| 亚洲无线码在线一区观看| 国产欧美久久一区二区| 亚洲国内精品视频| 在线性视频日韩欧美| 亚洲成人精品av| 尤物tv国产一区| 久久精视频免费在线久久完整在线看| 欧美一区深夜视频| 97av在线影院| 国产精品第二页| 亚洲综合中文字幕在线| 国产精品色悠悠| 欧美精品18videos性欧| 亚洲a级在线播放观看| 欧美性猛交xxxx富婆弯腰| 精品久久久久久久久国产字幕| 久久av资源网站| 亚洲一区二区中文| 欧美日韩精品在线| 中文字幕久热精品视频在线| 久久久久久久久网站| 日韩欧美在线视频日韩欧美在线视频| 日韩精品免费在线播放| 国产精品国模在线| 国产精品久久久久av免费| 91欧美精品午夜性色福利在线| 国产成人精品国内自产拍免费看| 国产亚洲日本欧美韩国| 在线精品视频视频中文字幕| 中文字幕欧美日韩| 日韩国产精品一区| 久久精品视频免费播放| 自拍视频国产精品| 91亚洲国产成人精品性色| 欧美激情影音先锋| 欧美亚洲视频在线观看| 欧美精品中文字幕一区| 国产精品免费一区| 国产精品久久久久久久久免费看| 国产精品白丝jk喷水视频一区| 国产精品扒开腿做爽爽爽的视频| 精品性高朝久久久久久久| 国产91精品视频在线观看| 亚洲片国产一区一级在线观看| 国产精品视频999| 国产激情久久久| 亚洲丝袜一区在线| 55夜色66夜色国产精品视频| 欧美最猛性xxxxx亚洲精品| 亚洲曰本av电影| 在线日韩精品视频| 亚洲成av人片在线观看香蕉| 日韩欧美国产中文字幕| 国内精品免费午夜毛片| 国产在线98福利播放视频| 深夜精品寂寞黄网站在线观看| 国产97在线视频| 欧美激情在线观看| 国产成人黄色av| 国产精品一区二区三区在线播放| 亚洲最大福利网站| 亚洲国产精品人久久电影| 国产亚洲精品综合一区91| 欧美天堂在线观看| 欧美日韩亚洲一区二区三区| 最近2019年中文视频免费在线观看| 欧美电影免费观看电视剧大全| 亚洲天堂视频在线观看| 日韩精品丝袜在线| 欧美黄色三级网站| 国产成人精品av在线| 日韩精品免费综合视频在线播放| 日韩中文字幕国产| 97不卡在线视频| 欧美日韩在线视频一区| 亚洲理论在线a中文字幕| 久久色精品视频| 欧美一级大片在线免费观看| 美乳少妇欧美精品| 日韩在线视频免费观看高清中文| 欧美成人中文字幕在线| 黄色成人av网| 国外色69视频在线观看| 国产精品96久久久久久| 2018中文字幕一区二区三区| 欧美黑人极品猛少妇色xxxxx| 日韩欧美一区二区在线| 在线午夜精品自拍| 成人激情视频在线播放| 色琪琪综合男人的天堂aⅴ视频| 欧美黑人一级爽快片淫片高清| 久久中文字幕国产| 九九视频这里只有精品| 久久久精品中文字幕| 久久亚洲一区二区三区四区五区高| 欧美成人免费在线观看| 欧美极品少妇xxxxx| 另类视频在线观看| 韩国国内大量揄拍精品视频| 国产精品专区第二| 国产精品亚洲片夜色在线| 日韩欧美成人网| 日韩av在线看| 日韩欧美国产骚| 久久久久久久成人| 成人福利网站在线观看11| 久久精视频免费在线久久完整在线看| 91九色视频导航| 日韩av电影在线播放| 日本亚洲精品在线观看| 国产精品久久综合av爱欲tv| 亚洲国产精品推荐| 欧美精品成人91久久久久久久| 国产精品va在线播放我和闺蜜| 欧美亚洲日本黄色| 国产精品视频网| 久久精品久久久久久国产 免费| 国产成人小视频在线观看| 成人精品福利视频| 日韩亚洲欧美成人| 日韩在线精品一区| 亚洲一区二区三区在线视频| 国产97免费视| 亚洲男人天堂古典| 日韩欧美在线观看| 午夜精品免费视频| 97精品欧美一区二区三区| 国产欧美日韩中文字幕|