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

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

Swift-編程語言入門之對象與類

2019-11-02 14:52:17
字體:
供稿:網(wǎng)友

   使用 class 可以創(chuàng)建一個類。一個屬性的聲明則是在類里作為常量或變量聲明的,除了是在類的上下文中。方法和函數(shù)也是這么寫的。

  class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with (numberOfSides) sides." } }

  練習(xí)

  通過 "let" 添加一個常量屬性,以及添加另一個方法能接受參數(shù)。

  通過在類名后加小括號來創(chuàng)建類的實例。使用點語法來訪問實例的屬性和方法。

  var shape = Shape()

  shape.numberOfSides = 7

  var shapeDescription = shape.simpleDescription()

  這個版本的 Shape 類有些重要的東西不在:一個構(gòu)造器來在創(chuàng)建實例時設(shè)置類。使用 init 來創(chuàng)建一個。

  class NamedShape {

  var numberOfSides: Int = 0

  var name: String init(name: String) {

  self.name = name

  } //by gashero

  func simpleDescription() -> String {

  return "A Shape with (numberOfSides) sides."

  }

  }

  注意 self 用來區(qū)分 name 屬性和 name 參數(shù)。構(gòu)造器的生命跟函數(shù)一樣,除了會創(chuàng)建類的實例。每個屬性都需要賦值,無論在聲明里還是在構(gòu)造器里。

  使用 deinit 來創(chuàng)建一個析構(gòu)器,來執(zhí)行對象銷毀時的清理工作。

  子類包括其超類的名字,以冒號分隔。在繼承標(biāo)準(zhǔn)根類時無需聲明,所以你可以忽略超類。

  子類的方法可以通過標(biāo)記 override 重載超類中的實現(xiàn),而沒有 override 的會被編譯器看作是錯誤。編譯器也會檢查那些沒有被重載的方法。

  class Square: NamedShape {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)." } } let test = Square(sideLength: 5.2, name: "my test square") test.area() test.simpleDescription()

  練習(xí)

  編寫另一個 NamedShape 的子類叫

悠悠鳥影視[www.aikan.tv/special/youyouniaoyingshi/]
做 Circle ,接受半徑和名字到其構(gòu)造器。實現(xiàn) area 和 describe 方法。

  屬性可以有 getter 和 setter 。

  class EquilateralTriangle: NamedShape

  {

  var sideLength: Double = 0.0

  init(sideLength: Double, name: String){

  self.sideLength = sideLength

  super.init(name: name)

  numberOfSides = 3

  }

  var perimeter: Double{

  get {

  return 3.0 * sideLength

  }

  set {

  sideLength = newValue / 3.0

  }

  }

  override func simpleDescription() -> String {

  return "An equilateral triangle with sides of length (sideLength)."

  }

  }

  var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")

  triangle.perimeter

  triangle.perimeter = 9.9

  triangle.sideLength

  在 perimeter 的 setter 中,新的值的名字就是 newValue 。你可以提供一個在 set 之后提供一個不沖突的名字。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江源县| 巴青县| 来宾市| 越西县| 伊宁市| 建湖县| 乐至县| 阿克陶县| 广元市| 延吉市| 江安县| 天柱县| 黎城县| 万载县| 辉南县| 手游| 那坡县| 南涧| 娱乐| 绩溪县| 霍山县| 哈巴河县| 南丰县| 五指山市| 广宗县| 福建省| 汉源县| 彭水| 阿巴嘎旗| 郎溪县| 密山市| 仙居县| 宿松县| 布尔津县| 申扎县| 长葛市| 沐川县| 南江县| 南江县| 湖北省| 长白|