Swift:初始化期间覆盖函数(请参阅Java示例中的含义)

时间:2016-07-30 17:26:17

标签: java swift override implementation

在Java中,假设我们有一个名为Card的类。该类有一个getAction()方法,并返回Action类的对象。

我知道在init期间可以覆盖此方法。像这样:

Card card = new Card() { 
   @Override
   public Action getCard() {
      return Action...
   }
}

我的问题是,如果您可以使用Swift语言执行此操作,或者您是否只需要为方法的每个不同覆盖创建一个类?

2 个答案:

答案 0 :(得分:0)

你不能在Swift中这样做,你必须要创建一个类,然后你必须从该类继承并覆盖这些方法。

您可以选择此回复:Swift: Override object method

答案 1 :(得分:0)

您在Java中引用的内容称为anonymous inner class - 您实际上是在声明一次性派生类内联。

很遗憾 Swift没有此功能。

您可以考虑将闭包传递给实例。

假设您的Card类有var getCardFunction

Class Card {
  var getCardFunction : () -> Int
}

现在你可以在初始化后传递你想要的功能:

var card = Card()
card.getCardFunction = {
  return 6
}

注意 :您甚至可以拥有getCardFunction功能的默认值:

Class Card {
  var getCardFunction : () -> Int = {
    return 3
  }
}