在类swift中覆盖func

时间:2015-11-03 16:59:09

标签: swift class func

我对swift很新,我对类中函数的定义有疑问。 我想生成几个项目,并给每个项目一个特殊的功能,所以我可以通过itemxy.useitem()运行它们

class item {
   var name = "test"
   func useitem(){
   print("test")
   }
}

let staff = item()

staff.name = "Staff"

staff.useitem() // prints: test

*override staff.useitem() = {print("this is a staff")}*

staff.useitem() // prints: this is a staff

如何将新功能与我的项目员工对齐?

1 个答案:

答案 0 :(得分:2)

这些并非完全相关,而且是更通用的编程,你不会在这里得到这些问题的答案。在进一步解决问题之前,您应该阅读基本的编程原则。

说过你的问题可以通过继承或协议轻松解决。

继承

class Item {

  var name: String

  init(name: String) {
    self.name = name
  }

  func use() {
    print("using a \(name)")
  }

}

class Hat: Item {

  override func use() {
    print("I put on a \(name)")
  }

}

class Pen: Item {

  init() {
    super.init(name: "Pen")
  }

}

let pen = Pen()
pen.use()

let hat = Hat(name: "Beanie")
hat.use()

协议

protocol Item {

  var name: String { get set }
  func use()

}

extension Item {

  func use() {
    print("using a \(name)")
  }

}

struct Pen: Item {
  var name: String

  init() {
    self.name = "Pen"
  }

}

struct Hat: Item {

  var name: String

  func use() {
    print("I put on a \(name)")
  }

}

let pen = Pen()
pen.use()

let hat = Hat(name: "Beanie")
hat.use()