我想知道如何使用协议来代替抽象类。下面是用抽象类编写的场景,我想用swift中的协议来实现:

public abstract class ModelA
{
  protected int productQuantity;
  protected String productUrl;
}

class ModelB extends ModelA
{
  // I want to access ModelA members here
}

我想用swift中的协议实现上述功能。
任何帮助都将不胜感激。

最佳答案

议定书的执行应:

protocol ModelA {
    // props
    var productQuantity: Int { get set }
    var productUrl:String { get set }
}

“我想在这里访问ModelA成员”,实际上您必须在ModelA中实现ModelB属性。否则,将出现编译错误,说明:
java - swift:如何使用协议(protocol)代替抽象类?-LMLPHP
型号B:
class ModelB: ModelA {
    // default values
    var productQuantity: Int = 0
    var productUrl: String = ""

    // you can remove the default values after implementing 'init':
    init(productQuantity: Int, productUrl: String) {
        self.productQuantity = productQuantity
        self.productUrl = productUrl
    }
}

有关协议的更多信息,请检查Apple Documentation

关于java - swift:如何使用协议(protocol)代替抽象类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40604146/

10-12 22:56
查看更多